Orderby在自定义查询上的工作方式与预期不符

时间:2015-06-22 作者:Klevis Miho

我有此自定义查询:

query_posts(  
  array ( 
    \'orderby\' => \'rr_recommends_count\',
    \'meta_key\' => \'rr_recommends_count\',
    \'order\' => \'DESC\',
  )
);
这些帖子的顺序如下:

9、8、7、6、5、4、3、2、,11, 10, 1等等。

我发现问题是meta\\u value字段的类型longtext.

如何在不更改meta\\u值字段类型的情况下修复排序?

2 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

首先,永远不要使用query_posts. 它破坏了主函数以及依赖于主查询对象的所有插件和函数。对于自定义查询,请使用WP_Queryget_posts 如果不希望对查询分页

对于以下行

\'orderby\' => \'rr_recommends_count\',
我可以告诉你rr_recommends_count 是对的无效值orderby 参数怀疑这实际上是键名,并且该键中的值都是数字,因此您可以使用meta_value_num 对的值orderby 有效值的参数

\'orderby\' => \'meta_value_num\',
请参见Order and Orderby Parameters in WP_Query

SO网友:Anand

please try this:

$args = array(
    \'orderby\'   => \'meta_value_num\',
    \'meta_key\'  => \'rr_recommends_count\',
     \'order\'   => \'DESC\');
$query = new WP_Query( $args );
结束