it-source

meta_query, 관계 OR & AND를 모두 사용하여 검색하려면 어떻게 해야 합니까?

criticalcode 2023. 4. 1. 09:35
반응형

meta_query, 관계 OR & AND를 모두 사용하여 검색하려면 어떻게 해야 합니까?

해결 완료:아래 답변을 참조하십시오.


저는 BOOKS라고 하는 커스텀 포스트 타입이 있습니다.여기에는 다음과 같은 몇 가지 커스텀필드가 있습니다.TITLE,AUTHOR,GENRE,RATING수정 방법meta_query커스텀 필드에 검색어가 있는 서적만 포함되도록 하기 위해 아래 코드를 입력합니다.title,author,genre 정확하게rating검색 폼에 지정된 결과가 표시됩니까?

커스텀 검색 폼을 작성했습니다.텍스트 영역에서는,title,author그리고.genre; 및 를 검색하는 드롭다운rating.그meta_query아래 검색만 했습니다.title,author,그리고.genre하지만 저는 지금 어떻게 코드를 추가해야 할지 고민하고 있습니다.rating.

meta_query 관계를 통해 시각적으로 상상한 것은 다음과 같습니다. (제목 OR 작가 OR 장르) 그리고 평가

$args = array(
        'relation' => 'OR',
          array(
             'key' => 'title',
             'value' => $searchvalue,
             'compare' => 'LIKE'
          );
          array(
             'key' => 'author',
             'value' => $searchvalue,
             'compare' => 'LIKE'
          );
          array(
             'key' => 'genre',
             'value' => $searchvalue,
             'compare' => 'LIKE'
          );
), 
        array(
        'relation' => 'AND', 
          array(
             'key' => 'rating',
             'value' => $ratingvalue,
             'compare' => '=',
             'type' => 'NUMERIC'
          ));

당신의 도움과 조언에 매우 감사합니다.

나는 약간의 도움을 받아 해결책을 찾았다.아래 코드는 완벽하게 동작했습니다.

    $args => array(
        'relation' => 'AND',
        array(
            'relation' => 'OR',
            array(
                'key' => 'title',
                'value' => $searchvalue,
                'compare' => 'LIKE'
            ),
            array(
                'key' => 'author',
                'value' => $searchvalue,
                'compare' => 'LIKE'
            ),
            array(
                'key' => 'genre',
                'value' => $searchvalue,
                'compare' => 'LIKE'
            )
        ),
        array(
            'key' => 'rating',
            'value' => $ratingvalue,
            'compare' => '=',
            'type' => 'NUMERIC'

        )
    )
);

약간의 시행착오 끝에 나는 이것에 대한 해결책을 찾았다.meta_query는 "key" 필드의 어레이를 지원하지 않지만 어레이를 "key"로 지정하면 완벽한 솔루션을 얻을 수 있습니다.내가 미친 것처럼 들릴지 모르지만 그것은 매력적으로 작용하고 있다.

$args => array(
    'relation' => 'AND',
    array(
        'key' => array('title','author','genre',),
        'value' => $searchvalue,
        'compare' => '='
    ),
    array(
        'key' => 'rating',
        'value' => $ratingvalue,
        'compare' => '=',
        'type' => 'NUMERIC'

    )
)

문자열이 아닌 배열을 전달하고 있기 때문에 "trim()"에 대한 경고만 표시됩니다.해당 경고를 억제하거나 더 나은 해결책을 찾으면 추가해 주십시오.

언급URL : https://stackoverflow.com/questions/18401879/meta-query-how-to-search-using-both-relation-or-and

반응형