问题描述
Aa 你知道,从 WP3.0 开始,有自定义高级查询的选项,这是非常好的。因此,对于新的 meta_query 参数 (see here),不推荐使用 meta_key,meta_value 等自定义字段的某些查询参数,
我尝试使用新的语法查询一个非常简单的查询,由包含指定的 meta_key(order_in_archive) 的某个 post_type(服务) 查询帖子 – 这是按预期方式进行的。但是 – 我想通过 meta_value 的查询排序,没有成功。
这是我的查询 –
query_posts(
array( 'post_type' => 'services',
'order' => 'ASC',
'orderby' => 'meta_value',
'meta_query' => array(
array('key' => 'order_in_archive'))
)
);
我也尝试了 meta_value_numeric 和 meta_value 的订单,但无论如何,结果正在发布日期被排序 (作为常规帖子) 。任何人都知道如何做到这一点?
谢谢
最佳解决方案
您可以使用旧方法 (我在 WP 3.1.1 上测试) 定义 orderby 参数的元键…
query_posts(
array( 'post_type' => 'services',
'order' => 'ASC',
'meta_key' => 'some_key',
'orderby' => 'meta_value', //or 'meta_value_num'
'meta_query' => array(
array('key' => 'order_in_archive',
'value' => 'some_value'
)
)
)
);
次佳解决方案
WP Codex 在解决这个问题时其实很混乱。
您实际上并不需要 meta_query 参数来使用 orderby,而是使用 meta_key 参数,尽管 WP Codex 已被弃用,但已经在此建立:How do you use orderby with meta_query in WordPress 3.1?,其顺序依然需要 meta_key 。
所以应该是
query_posts( array(
'post_type' => 'services',
'order' => 'ASC',
'orderby' => 'meta_value',
'meta_key' => 'order_in_archive'
) )
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。