여러 메타 키 및 메타 값으로 정렬 [닫힘]


16

메타 값을 기준으로 여러 메타 키 순서를 설정하려면 어떻게해야합니까?


4
WPSE에 오신 것을 환영합니다. 귀하를 도와 주려면 우리를 도와야합니다. 수행하려는 작업을 자세히 설명하고 코드 샘플을 게시 할 수 있습니다.
TheDeadMedic

답변:


32

meta_query메타 절의 배열입니다. 예를 들면 다음과 같습니다.

$q = new WP_Query( array(
    'meta_query' => array(
        'relation' => 'AND',
        array(
            'key' => 'state',
            'value' => 'Wisconsin',
        ),
        array(
            'key' => 'city',
            'compare' => 'EXISTS',
        ), 
    ),
) );

각 메타 절에 대한 키와 함께 연관 배열을 사용할 수 있습니다.

$q = new WP_Query( array(
    'meta_query' => array(
        'relation' => 'AND',
        'state_clause' => array(
            'key' => 'state',
            'value' => 'Wisconsin',
        ),
        'city_clause' => array(
            'key' => 'city',
            'compare' => 'EXISTS',
        ), 
    ),
) );

그런 다음 order_by인수에 해당 키를 사용할 수 있습니다 .

$q = new WP_Query( array(
    'meta_query' => array(
        'relation' => 'AND',
        'state_clause' => array(
            'key' => 'state',
            'value' => 'Wisconsin',
        ),
        'city_clause' => array(
            'key' => 'city',
            'compare' => 'EXISTS',
        ), 
    ),
    'orderby' => 'city_clause', // Results will be ordered by 'city' meta values.
) );

또는 더 많은 조항들 :

$q = new WP_Query( array(
    'meta_query' => array(
        'relation' => 'AND',
        'state_clause' => array(
            'key' => 'state',
            'value' => 'Wisconsin',
        ),
        'city_clause' => array(
            'key' => 'city',
            'compare' => 'EXISTS',
        ), 
    ),
    'orderby' => array( 
        'city_clause' => 'ASC',
        'state_clause' => 'DESC',
    ),
) );

Make WordPres Core 블로그 의이 게시물 에서 가져온 예 입니다.


메타 키 / 값 유형을 추가하는 것을 잊지 마십시오. 결과에 영향을 미칩니다. 기본적으로 wp는 메타를 문자열로 취급합니다.
Alexander Ivashchenko

3
그러나 주가 위스콘신 인 경우에만 결과를 반환하지 않으려면 어떻게해야합니까? 나는 모든 주가 반환되기를 원하며 도시가있을 수도 있고 없을 수도있는 행을 원하지만 그 두 필드로 주문합니다. 예를 들어 WHERE 절은 전혀 없으며 ORDER BY 만 있습니다.
Felix Eve
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.