Изучая проблему сопоставления базы данных, я заметил некоторое довольно странное поведение порядка. Основываясь на фактическом запросе, существует разница в позиции order by, которая дает разные результаты при использовании meta_query
, а не только аргумента meta_key
.Wordpress: непредвиденная разница в заказе с meta_query против meta_key
В моем случае у меня есть специальная meta_key
для lastnames только для этой цели.
'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
Это ожидаемое поведение р? Есть ли что-то, что я должен изменить в своих аргументах запроса при использовании meta_query
?
Но. См. Https://make.wordpress.org/core/2015/03/30/query-improvements-in-wp-4-2-orderby-and-meta_query/ – and