問題描述
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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。