私は複数のorderby値でソートするためのクエリを考え出すことを試みています。これが私がこれまでに持っているものです:
$dept_id=2;
$query=new WP_Query(array(
'post_type'=>'wpcontactus',
'nopaging'=>true,
'post_status'=>array('publish', 'pending', 'future'),
'meta_key'=>'wcu_dept',
'meta_value'=>$dept_id,
'orderby'=>'title',
'order'=>'ASC'
));
カスタム投稿タイプをクエリし、その投稿タイプ内でメタ値をクエリします。
次に、最初にmenu_order
の昇順でソートし、次にカスタムメタ値wcu_lastname
の昇順でソートします。しかし、orderby値は配列を取ることができないようでした。
複数のorderby値を使用してクエリを並べ替えるにはどうすればよいですか?
$query=new WP_Query(array(
'post_type'=>'wpcontactus',
'nopaging'=>true,
'post_status'=>array('publish', 'pending', 'future'),
'meta_query'=>array(
array('key'=>'wcu_dept','value'=>$dept_id, 'compare'=>'='),
),
'meta_key'=>'wcu_firstname',
'orderby'=>'menu_order wcu_firstname',
'order'=>'ASC'
));
@kaiserが提案したものとmeta_query
オプションを使用することで、探していたクエリを取得できました。
@Musaどうすればフィールドに複数の注文値を入れることができますか?私は同じ質問を疑問に思っていました、そして私はこれを見つけました:
4.0では、orderbyの値としてWP_Queryに配列を渡すことができます。
構文は次のようになります。
$q = new WP_Query( array(
'orderby' => array(
'title' => 'DESC',
'menu_order' => 'ASC'
)
));
詳細については、こちらをご覧ください。 https://make.wordpress.org/core/2014/08/29/a-more-powerful-order-by-in-wordpress-4-0/
$args = [
's' => $keyword,
'post_type' => ['page'],
'paged' => $paged,
'posts_per_page' => PAGE_LIMIT,
'tax_query' => [
[
'taxonomy' => TAX_RESOURCE_PAGE,
'field' => 'slug',
'terms' => $c_term_slug
],
],
'post_status' => 'publish',
'meta_key' => 'order',
'meta_type' => 'NUMERIC',
'orderby' => [
'meta_value_num' => 'ASC',
'ID' => 'DESC',
],
];
$wp_query = new WP_Query( $args );
私のコードは例です。