我有自定義WP_Query電話,我需要顯示CPTproperty由一個自定義欄位floor與meta_valuesecond_floor和排序他們由另一場apartment_number用'orderby' => 'meta_value'。全碼:
$args = array(
'post_type' => 'property',
'post_status' => 'publish',
'posts_per_page' => -1,
'order' => 'ASC',
'meta_key' => 'floor',
'meta_value' => 'second_floor',
'meta_compare' => 'LIKE',
'meta_key' => 'apartment_number',
'orderby' => 'meta_value',
);
$query = new WP_Query( $args );
uj5u.com熱心網友回復:
您可以使用meta_query此處解釋的https://developer.wordpress.org/reference/classes/wp_query/#custom-field-post-meta-parameters執行查詢
使用元查詢,您已包含一個值,然后orderby在主查詢中使用子句,您可以指定要按 meta_value 進行排序,如此處所述https://developer.wordpress.org/reference/classes/wp_query /#order-orderby-引數
$args = array(
'post_type' => 'property',
'post_status' => 'publish',
'posts_per_page' => -1,
'meta_query' => array(
array(
'key' => 'floor',
'value' => 'second_floor',
'compare' => 'LIKE',
),
),
'order' => 'ASC',
'meta_key' => 'apartment_number',
'orderby' => 'meta_value',
);
澄清一下,這是上述 WP_Query 的結果 SQL:
SELECT wp_posts.*
FROM wp_posts
INNER JOIN wp_postmeta
ON ( wp_posts.ID = wp_postmeta.post_id )
INNER JOIN wp_postmeta AS mt1
ON ( wp_posts.ID = mt1.post_id )
WHERE 1=1
AND ( wp_postmeta.meta_key = 'apartment_number'
AND ( ( mt1.meta_key = 'floor'
AND mt1.meta_value LIKE '%second\\_floor%' ) ) )
AND wp_posts.post_type = 'product'
AND ((wp_posts.post_status = 'publish'))
GROUP BY wp_posts.ID
ORDER BY wp_postmeta.meta_value ASC
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/398149.html
標籤:WordPress的
