自定义帖子类型查询的动态日期变量

时间:2014-06-28 19:52:21

标签: php wordpress

我正在查询一个名为'events'的自定义帖子类型,它有一个名为'event_date'的元字段,以日期格式存储。我希望有三到四个单独的查询,每个查询在特定时间段内查找帖子。第一个查询将是当前月份内的所有帖子,然后是下个月的另一个,然后是之后的月份,依此类推。重要的是它们是单独的查询,而不是一个。

我可以使用下面的代码在设定日期之间进行查询,但我希望这些动态能够根据当前日期添加开始日期变量和结束日期变量。我正在考虑使用类似于我遇到的代码的东西,它成功地给了我月份名称,但我正努力在我的WordPress查询中使用它。

<?php
$d = new DateTime( 'now' );
$d->modify( 'first day of this month' );
echo $d->format( 'F' ), "\n";
?>

无论如何我可以根据需要整合动态开始日期日期和结束日期变量,可以是当月,+ 1,+ 2,+ 3个月等?感谢您提供的任何帮助。

我的查询代码是:

<?php
$args = array( 
    'post_type' => 'event',
    'meta_key' => 'event_date',
    'orderby' => 'meta_value_num',
    'order' => 'ASC',
    'showposts' => 20,
    'meta_query' => array(
    'relation' => 'AND',
        array(
            'key' => 'event_date',
            'value' => '2014-06-01', // Lowest date value
            'compare' => '>='
        ),
        array(
            'key' => 'event_date',
            'value' => '2014-06-31', // Highest date value
            'compare' => '<='
        )
    )
);
$event_posts = new WP_Query($args);

if($event_posts->have_posts()) : 
while($event_posts->have_posts()) : 
  $event_posts->the_post();
?>

POST CONTENT HERE

<?php
    endwhile;
    else: 
?>

Oops, there are no posts.

<?php
    endif;
    ?>

2 个答案:

答案 0 :(得分:0)

使用此语法...易于阅读和使用:

array(
        'key' => 'event_date',
        'value' => date('Y-m-d',strtotime('+1 month')), 
        'compare' => '<='
    )

玩得很开心,并查看Relative formats了解所有可能性

答案 1 :(得分:0)

看看http://www.php.net/manual/function.mktime.php。 你可以使用这样的东西:

$month_add = 0; // current month, add value for the next months
$low_date = date("Y-m-d", mktime(12, 0, 0, date("n")+$month_add, 1, date("Y")));
$high_date = date("Y-m-d", mktime(12, 0, 0, date("n")+$month_add+1, 1, date("Y")));

将最高日期的比较更改为:

'compare' => '<'