似乎不能进行组合查询和排序?

时间:2012-02-07 作者:Ray Gulick

下面是我用来查询多日事件的代码。我遇到的问题是,我可以按开始日期(evstart\\u date)排序,也可以对开始日期和结束日期(evend\\u date)进行组合查询。但我无法同时执行组合查询和排序。下面的代码正确地进行了查询(继续显示过去开始但尚未结束的多日事件),但排序已中断(恢复为按发布日期进行默认排序)。

我尝试了几种不同的方法,但都找不到解决方案。

<?php
    $paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
    $today = date(\'Y-m-d\', strtotime(\'-6 hours\'));
    $upcomingevents = new WP_Query(array(
        \'post_type\' => \'events\', 
        \'posts_per_page\' => 6,  
        \'paged\' => $paged,
        \'meta_query\'=>array(
        \'relation\'=>\'OR\',
            array(
                \'key\' => \'evstart_date\',
                \'value\' => $today,
                \'compare\' => \'>=\',
                \'type\' => \'CHAR\'
                ),
            array(
                \'key\' => \'evend_date\',
                \'value\' => $today,
                \'compare\' => \'>=\',
                \'type\' => \'CHAR\'
                )
             ),
        \'meta_key\' => \'evstart_date\',
        \'orderby\' => \'meta_value\',
        \'order\' => \'ASC\'
    )); 
?>

1 个回复
最合适的回答,由SO网友:Christian 整理而成

我也遇到了同样的问题,直到我意识到实际上不必按事件开始日期进行查询,只需按结束日期进行查询。

只要事件的结束日期没有超过,开始日期是否在未来就无关紧要。你所要做的就是抓取所有尚未结束的日期,然后按开始日期排序。

这应该适合您:

<?php
    $paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
    $today = date(\'Y-m-d\', strtotime(\'-6 hours\'));
    $upcomingevents = new WP_Query(array(
        \'post_type\' => \'events\', 
        \'posts_per_page\' => 6,  
        \'paged\' => $paged,
        \'meta_query\'=>array(
            array(
                \'key\' => \'evend_date\',
                \'value\' => $today,
                \'compare\' => \'>=\',
                \'type\' => \'CHAR\'
                )
             ),
        \'meta_key\' => \'evstart_date\',
        \'orderby\' => \'meta_value\',
        \'order\' => \'ASC\'
    )); 
?>

结束

相关推荐

QUERY_POST在多个方向排序

我试图通过使用多个标准来改进我的帖子排序,但我希望为不同的值指定特定的顺序。例如,我有一个名为“featured”的meta\\u键,我想将任何帖子移至顶部。要匹配“特色”,应按标题排序。问题是,我只能在query\\u posts函数中定义一个“order”键。$args=array( \'post_type\' => \'portfolio-item\',