显示开始日期或结束日期晚于当前日期的帖子

时间:2012-08-12 作者:Inao V.

我正在处理即将到来的活动列表。我创建了一个自定义的帖子类型,带有一个自定义字段:[event\\u start\\u date]。我还有一些多日扩展事件,由一个额外的自定义字段定义:[event\\u end\\u date]。然后,我有两种事件(示例):

生日开始日期:2012年8月13日,结束日期:“空”假日开始日期:2012年8月5日,结束日期:2012年8月30日我想显示“开始”或“结束日期”晚于当前时间的事件,但我失败了。

我认为我的日期格式是正确的,因为我已经开始使用其他“查询”,它只使用[开始日期]就可以完美地工作。我的问题是合并“OR”end\\u date条件。我尝试使用带有“或关系”的meta\\u查询,但不起作用:

$args = array(
             \'post_type\' => \'eventos2\',
             \'posts_per_page\' => 4,
             \'meta_key\' => \'event_start_date\',
             \'orderby\' => \'meta_value\',
             \'order\' => \'ASC\',
             \'meta_query\' => array(
             \'relation\' => \'OR\',
             array(\'key\'  => \'event_start_date\',
                   \'value\' => date(\'Y/m/d\', strtotime(\'-1 day\')),
                   \'compare\' => \'>=\')

             array(\'key\'  => \'event_end_date\',
                   \'value\' => date(\'Y/m/d\', strtotime(\'-1 day\')),
                   \'compare\' => \'>=\')
             )
   );
$loop = new WP_Query( $args ); 
while ( $loop->have_posts() ) : $loop->the_post();
$end = DateTime::createFromFormat(\'Y/m/d\', get_field(\'event_end_date\')); 
$start = DateTime::createFromFormat(\'Y/m/d\', get_field(\'event_start_date\'));

if ($end !=\'\') {  /*print events with start and end_date*/ 
    echo "<li>";
    echo the_title(), "</br>";
    echo $start-> format(\'Y/m/d\'),"&nbsp". to . "&nbsp". $end-> format(\'Y/m/d\'); 
    echo "</li>";
    }
    else {             /*print events with only start_date*/
    echo "<li>";
    echo the_title(), "</br>";
    echo $start-> format(\'Y/m/d\');
    echo "</li>";   
    }
    endwhile;
   ?>
它显示了以下结果:

事件2 2012/08/08至2012/08/15。此外,事态混乱。

我将感谢您对这个问题的任何指导。

1 个回复
SO网友:Stephen Harris

Edit:

我相信我下面的评论仍然有效,但我怀疑部分问题在于

\'relation\' => \'OR\',
这应该是“AND”(它是默认值,因此可以删除),以确保它只返回同时满足这两个条件的帖子。目前,它将返回昨天之后开始或结束的事件。实际上,这将返回昨天或之后结束的所有事件。

当然,这可能只是问题的一部分。。。

我看不出查询本身有什么问题,但事件日期的字符串表示会导致查询问题(没有示例,很难说这是不是问题)。如果要按日期的字符串表示而不是时间戳进行排序,则格式m/d/Y 无法正确排序:

01/01/2012 发生在之后,但出现在之前

11/01/1012

比如说!格式Y/m/d 将起作用。

结束

相关推荐

为除特定类别之外的所有帖子类型的帖子形成WP_Query

我需要从博客获取帖子,自定义帖子类型1,自定义帖子类型2。自定义职位类型3,来自类别1或类别2或类别3或类别4或类别5或类别6或类别7或类别8。我有这个,但不起作用。我没有得到任何结果,也没有错误。<?php function filter_where_categs() { $where .= \" AND (category_name => array(\'black-star-crescent-moon\', \'audio\', \'b