【问题标题】:Wordpress - Magic Fields - Sort by custom magic field using WP_QueryWordpress - 魔术字段 - 使用 WP_Query 按自定义魔术字段排序
【发布时间】:2012-12-16 21:05:50
【问题描述】:

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

【问题讨论】:

    标签: php mysql wordpress


    【解决方案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

    【讨论】:

    • 啊,非常感谢,你是对的,orderby 是正确的。只是为了澄清一下,我的意思是 wordpress plugin 中的“魔术字段”另外,请注意,由于我的 sort 字段是数字,我还需要使用 'orderby' => 'meta_value_num' 并且现在一切正常!
    猜你喜欢
    • 1970-01-01
    • 2013-08-12
    • 2017-07-30
    • 2014-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-07
    • 1970-01-01
    相关资源
    最近更新 更多