我正在使用魔术字段,并定义了一个名为 collection
的自定义帖子类型,其中包含一个名为 sort
的字段,我在其中输入了一个数字,我想对自定义帖子进行排序。
我WP_Query论点很简单:
'post_type' => 'collection',
'meta_key' => 'sort',
'order_by' => 'meta_value',
'order' => 'ASC'
在对$query结果使用 print_r 时,它揭示了以下 mysql 语句:
SELECT SQL_CALC_FOUND_ROWS wp_posts.* FROM wp_posts INNER JOIN wp_postmeta ON (wp_posts.ID = wp_postmeta.post_id) WHERE 1=1 AND wp_posts.post_type = 'collection' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private') AND (wp_postmeta.meta_key = 'sort' ) GROUP BY wp_posts.ID ORDER BY wp_posts.post_date ASC LIMIT 0, 10
所以我很困惑为什么生成的 mysql 仍然包含ORDER BY wp_posts.post_date
,当我明确声明它应该按wp_postmeta.meta_key = 'sort'
及其相应的meta_value
排序时?
'post_type' => 'collection',
'meta_key' => 'sort',
'orderby' => 'meta_value',
'order' => 'ASC'
order_by = 排序方式
此外,它不称为魔法字段,而是自定义字段
http://codex.wordpress.org/Class_Reference/WP_Query#Order_.26_Orderby_Parameters