私はmeta_keyで注文の投稿を注文しようとしています。しかし、WP_Queryが実行された後は、order句内のSQLクエリに変更はありません。
$args = array(
'post_type' => 'event',
'post_status' => 'publish',
'meta_key' => '_start_eventtimestamp',
'orderby' => 'meta_value_datetime',
'order' => 'ASC',
'meta_query' => array(
array(
'key' => '_start_eventtimestamp',
'value' => date('Ymd'),
'compare' => '>='
)
),
'posts_per_page' => '7',
);
$event_query = new WP_Query( $args );
生成されたクエリを取得すると、次のようになります。
SELECT SQL_CALC_FOUND_ROWS wp_posts.ID 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 = '_start_eventtimestamp'
AND ( ( mt1.meta_key = '_start_eventtimestamp' AND mt1.meta_value >= '20160930' ) ) )
AND wp_posts.post_type = 'event' AND ((wp_posts.post_status = 'publish'))
GROUP BY wp_posts.ID ORDER BY wp_posts.menu_order ASC LIMIT 0, 7
Order句は変更されませんでした。
私のmeta_keyによる順序のスクリプトに間違いがありますか?
WP_QUERY 改善と WP_QUERY Order&Orderbyパラメータ を見てください。
$args = array(
'post_type' => 'event',
'post_status' => 'publish',
'orderby' => array(
'meta_key' => 'ASC'
),
'meta_query' => array(
array(
'key' => '_start_eventtimestamp',
'value' => date('Ymd'),
'compare' => '>='
),
),
);
それがあなたのために働くことを願っています!