Wordpress - 魔术字段 - 使用WP_Query按自定义魔术字段排序

时间:2012-05-16 13:19:22

标签: php mysql wordpress

我正在使用魔术字段并定义了一个名为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进行排序时?

1 个答案:

答案 0 :(得分:1)

'post_type' => 'collection',
'meta_key' => 'sort',
'orderby' => 'meta_value',
'order' => 'ASC'

order_by = orderby

此外,它不是魔术字段,而是自定义字段

http://codex.wordpress.org/Class_Reference/WP_Query#Order_.26_Orderby_Parameters