カスタムループを使用してページにイベントを表示しています。以下を使用して、イベントの開始日ごとに細かい順序で並べ替えています。
$args = array(
'post_type' => 'event',
'order' => 'ASC',
'orderby' => 'meta_value',
'meta_key' => '_event_start_date');
$loop = new WP_Query( $args );
ただし、meta_keyオプションでは1つの値しか使用できません。 2つの値の使用方法(_event_start_date
および_event_start_time
)?
これはWordPress 4.2でサポートが追加されたものです: https://make.wordpress.org/core/2015/03/30/query-improvements-in-wp- 4-2-orderby-and-meta_query /
あなたの場合、あなたはおそらくこのようなことをしたいと思うでしょう:
$args = array(
'post_type' => 'event',
'meta_query' => array(
'relation' => 'AND',
'event_start_date_clause' => array(
'key' => '_event_start_date',
'compare' => 'EXISTS',
),
'event_start_time_clause' => array(
'key' => '_event_start_time',
'compare' => 'EXISTS',
),
),
'orderby' => array(
'event_start_date_clause' => 'ASC',
'event_start_time_clause' => 'ASC',
),
);
$loop = new WP_Query( $args );
みんなが言ったように、メタキーを追加するときにmeta_queryを使用する必要がありますが、関数ごとに順序をカスタマイズする必要もあります。
$args = array(
'post_type' => 'event',
'meta_key' => '_event_start_date',
'meta_query' => array(
array('key' => '_event_start_date'),
array('key' => '_event_start_time')
),
);
add_filter('posts_orderby','customorderby');
$loop = new WP_Query( $args );
remove_filter('posts_orderby','customorderby');
そしてこれをあなたのfunctions.phpに置いてください
function customorderby($orderby) {
return 'mt1.meta_value ASC, mt2.meta_value ASC';
}
あなたは http://dotnordic.se/sorting-wordpress-posts-by-several-numeric-custom-fields/ でもっと読むことができます