我是否可以在同一查询中按一个自定义字段和另一个元查询进行排序

时间:2011-03-07 作者:tjsherrill

我有一个自定义查询,我正在按自定义字段筛选事件:事件月。我简单地过滤那些没有月号=截止日期(“n”)的事件;

这是一个非常好的小查询,但我需要按另一个自定义字段event\\u date排序。

我是否需要自定义函数或其他什么来完成此操作。我只想排序方式=>event\\u date

但我目前正在使用事件月进行查询。

<?php 
        $event_query = new WP_Query(
        array( 
          \'post_type\'   => \'event\',        // only query events
          \'meta_key\'    => \'event-month\',  // load up the event_date meta
          \'order_by\'    => \'\',
          \'order\'       => \'asc\',         // ascending, so earlier events first
          \'meta_query\'  => array(
             array(         // restrict posts based on meta values
              \'key\'     => \'event-month\',  // which meta to query
              \'value\'   => date("n"),  // value for comparison
              \'compare\' => \'=\',          // method of comparison
              \'type\'    => \'NUMERIC\'         // datatype, we don\'t want to compare the string values
            ) // meta_query is an array of query ites
           ) // end meta_query array
          ) // end array
        ); // close WP_Query constructor call
?>

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

即使meta_key 尽管已弃用,但仍需要让orderby正常工作。

然而,首先也是最重要的是,您的代码有一个错误,这就是在使用order_by 而不是orderby (orderby参数中没有下划线)。

试一试,看看效果如何。

$event_query = new WP_Query( array( 
    \'post_type\'   => \'event\',
    \'meta_key\'    => \'event-month\',
    \'meta_query\'  => array(
        array( 
            \'key\'     => \'event-month\',
            \'value\'   => date("n"),
            \'compare\' => \'=\',
            \'type\'    => \'NUMERIC\'
        )
    ),
    \'orderby\'    => \'meta_value\',
    \'order\'       => \'asc\', 
) );
如果要添加第二个元键并按该键排序,只需确保该键位于meta_key arg,例如。

$event_query = new WP_Query( array( 
    \'post_type\'   => \'event\',
    \'meta_key\'    => \'some-key\',
    \'meta_query\'  => array(
        array( 
            \'key\'     => \'some-key\',
            \'value\'   => \'whatever\',
            \'compare\' => \'=\',
            \'type\'    => \'NUMERIC\'
        ),
        array( 
            \'key\'     => \'event-month\',
            \'value\'   => date("n"),
            \'compare\' => \'=\',
            \'type\'    => \'NUMERIC\'
        )
    ),
    \'orderby\'    => \'meta_value\',
    \'order\'       => \'asc\', 
) );
奇怪的是你需要meta_key 对于排序,但如果没有它,我看不到orderby得到尊重,我可以看到查询在里面是如何显示的debug bar\'s查询选项卡,据我所知meta_key 当前需要进行适当排序meta_value.

SO网友:gvanto

我发现t31os的答案是有效的,但前提是包括:

 \'posts_per_page\'   => -1,
在$参数中。。。

不包括它会做一些奇怪的事情,比如删除原本应该在结果集中的记录。

SO网友:Marcin

从参数中删除“meta\\u key”。WP 3.1中不起作用

结束

相关推荐