2017-02-16 59 views
0

在查看數據庫排序問題時,我注意到一些相當奇怪的排序行爲。根據實際查詢,在使用meta_query而不是僅僅使用meta_key參數時,按子句的順序會產生不同的結果。WordPress的:由meta_query與meta_key的差異意想不到order

在我的情況下,我有一個專用meta_key姓氏只是爲了這個目的。

'meta_key' => 'lastname', 
'orderby' => 'meta_value', 
'order' => 'ASC' 

這將產生由子句的順序,預計其工作原理:

ORDER BY wp_postmeta.meta_value ASC 

在另一方面,使用

'meta_query' => array(
    'lastname_clause' => array(
     'key' => 'lastname', 
     'compare' => 'EXISTS' 
    ) 
), 
'orderby' => array(
    'lastname_clause' => 'ASC' 
) 

產生

ORDER BY CAST(wp_postmeta.meta_value AS CHAR) ASC 

這是預期的行爲R'在使用meta_query時,在查詢參數中是否應該更改一些內容?

回答

0

lastname_clause無效。試試這個:

'meta_key' => 'lastname', 
'orderby' => array(
    'meta_value' => 'ASC', 
    'title' => 'DESC' // or whatever you want to sort as second 
) 

更多關於這 - >Orderby Parameters

+0

但它是。見https://make.wordpress.org/core/2015/03/30/query-improvements-in-wp-4-2-orderby-and-meta_query/ – and