获取当月或更晚的帖子

时间:2015-08-20 作者:Corey

我有一个自定义的帖子类型,它是一个事件。

我正在尝试查询这些事件,并且只返回当前月份或以后的事件。因此,事件可能发生在过去,但必须发生在同一个月。事件日期是一个自定义字段。

所以现在我只想要8月份或之后的活动,而不想要8月份之前的活动。

以下是我当前的查询,从最旧到最新排序:

$custom_post_type = \'event\';

$args = array(
    \'post_type\' => $custom_post_type,
    \'post_status\' => \'publish\',
    \'meta_key\' => \'event_date_and_time\',
    \'orderby\' => \'meta_value_num\',
    \'order\' => \'ASC\',
    \'posts_per_page\' => -1
);

$events = get_posts($args);

2 个回复
SO网友:Marek

您可以使用meta_query, 如果您在自定义字段中保存日期信息。像这样:

$args = array(
    \'post_type\' => $custom_post_type,
    \'posts_per_page\' => -1,
    \'meta_query\' => array(
        array(
            \'key\' => \'event_date_and_time\',
            \'value\' => current_time(\'Ymd\'),
            \'compare\' => \'>=\'
        )
    ),
    \'orderby\' => \'meta_value_num\',
    \'order\' => \'ASC\'
);
此代码假设您的日期以YYYYMMDD格式保存(20150820)。它显示了从今天到未来的帖子,所以你必须改变value 至“当月第一天”。

SO网友:Domain

使用meta_query 数组中的参数。

$custom_post_type = \'event\';

$args = array(
    \'post_type\' => $custom_post_type,
    \'post_status\' => \'publish\',
    \'meta_key\' => \'event_date_and_time\',
    \'orderby\' => \'meta_value_num\',
    \'order\' => \'ASC\',
    \'posts_per_page\' => -1
    \'meta_query\' => array(
        array(
            \'key\' => \'event_date_and_time\',
            \'value\'   => date("Y-m-1"); // starting from 1st of current month. This will change based on how you store dates.
            \'compare\' => \'>=\',
            \'type\' => \'NUMERIC,\' // Let WordPress know we\'re working with numbers
        )
    )
);

$events = get_posts($args);

结束