使用WP元查询按开始日期和完成日期显示自定义帖子类型

时间:2014-03-19 作者:user1280853

我有一个名为“事件”的自定义帖子类型,我有一个按每月显示事件的页面。每个事件都有一个start\\u date和finish\\u date自定义字段(使用高级自定义字段插件),该字段将日期存储为yymmdd。如果一个事件跨越两个不同的月份,它只会出现在开始日期的月份。我也被困在如何在完成日期的当月显示它。例如,如果我有一个开始日期为2014年3月19日、结束日期为2013年4月19日的活动,它应该出现在3月和4月。

我正在使用以下内容:

// Get chosen month to display from URL
$events_month = sanitize_text_field($_GET["month"]);
$events_year = sanitize_text_field($_GET["year"]);

// Convert chosen month to display to a timestamp
$ts = strtotime("$events_month $events_year");

// Create chosen month start end end dates to use for query
$month_start_date = date(\'Ym01\', $ts);
$month_end_date = date(\'Ymt\', $ts);

$args = array(
    \'post_type\' => \'events\',
    \'posts_per_page\' => 50,
    \'order\' => \'ASC\',
    \'orderby\' => \'meta_value_num\',
    \'meta_key\' => \'start_date\',
    \'meta_query\'        => array(
        array(
            \'key\' => \'start_date\',
            \'value\' => array($month_start_date, $month_end_date),
            \'type\' => \'numeric\',
            \'compare\' => \'BETWEEN\'
        )
    )
);

$events = new WP_Query($args);

1 个回复
SO网友:s_ha_dum

默认情况下,查询将GROUP BY 帖子ID,表示帖子在列表中只出现一次。你可以删除它GROUP BY 使用过滤器非常容易:

add_filter(\'posts_groupby\',\'__return_empty_string\');
$events = new WP_Query($args);
remove_filter(\'posts_groupby\',\'__return_empty_string\');
那可能会得到你想要的。这有点难说。没有GROUP BY 您的帖子应该在列表中显示多次。我怀疑你仍然需要对结果进行循环,并对其进行组织,以获得你想要的结果。

请参见:
https://codex.wordpress.org/Function_Reference/_return_empty_string

结束
使用WP元查询按开始日期和完成日期显示自定义帖子类型 - 小码农CODE - 行之有效找到问题解决它

使用WP元查询按开始日期和完成日期显示自定义帖子类型

时间:2014-03-19 作者:user1280853

我有一个名为“事件”的自定义帖子类型,我有一个按每月显示事件的页面。每个事件都有一个start\\u date和finish\\u date自定义字段(使用高级自定义字段插件),该字段将日期存储为yymmdd。如果一个事件跨越两个不同的月份,它只会出现在开始日期的月份。我也被困在如何在完成日期的当月显示它。例如,如果我有一个开始日期为2014年3月19日、结束日期为2013年4月19日的活动,它应该出现在3月和4月。

我正在使用以下内容:

// Get chosen month to display from URL
$events_month = sanitize_text_field($_GET["month"]);
$events_year = sanitize_text_field($_GET["year"]);

// Convert chosen month to display to a timestamp
$ts = strtotime("$events_month $events_year");

// Create chosen month start end end dates to use for query
$month_start_date = date(\'Ym01\', $ts);
$month_end_date = date(\'Ymt\', $ts);

$args = array(
    \'post_type\' => \'events\',
    \'posts_per_page\' => 50,
    \'order\' => \'ASC\',
    \'orderby\' => \'meta_value_num\',
    \'meta_key\' => \'start_date\',
    \'meta_query\'        => array(
        array(
            \'key\' => \'start_date\',
            \'value\' => array($month_start_date, $month_end_date),
            \'type\' => \'numeric\',
            \'compare\' => \'BETWEEN\'
        )
    )
);

$events = new WP_Query($args);

1 个回复
SO网友:s_ha_dum

默认情况下,查询将GROUP BY 帖子ID,表示帖子在列表中只出现一次。你可以删除它GROUP BY 使用过滤器非常容易:

add_filter(\'posts_groupby\',\'__return_empty_string\');
$events = new WP_Query($args);
remove_filter(\'posts_groupby\',\'__return_empty_string\');
那可能会得到你想要的。这有点难说。没有GROUP BY 您的帖子应该在列表中显示多次。我怀疑你仍然需要对结果进行循环,并对其进行组织,以获得你想要的结果。

请参见:
https://codex.wordpress.org/Function_Reference/_return_empty_string

相关推荐

如何通过jQuery Datepicker搜索帖子?

我正在WordPress网站上工作,我有自己的搜索筛选页面,在那里我添加了jquery日期选择器,现在我想按日期选择器搜索帖子?Html Codescript> $(function() { jQuery( \"#datepicker-13\" ).datepicker({ dateFormat : \"yy-mm-dd\" }); $(\"#datepicker-13\").datepicker().datepick