2014-04-17 4 views
0

wp_query에 대한 동적 인수 세트를 작성하려고하지만 실제로이 문제가 발생했습니다.가변 인수 개수가있는 wp_query

$args = array(
    'numberposts' => -1, 
    'posts_per_page' => -1, 
    'post_type' => 'skills', 
    'meta_query' => array(
     'relation' => 'OR', 
     array(
      'key' => 'years', 
      'value' => 'Primary', 
      'compare' => 'LIKE' 
     ), 
     array(
      'key' => 'years', 
      'value' => 'Secondary', 
      'compare' => 'LIKE' 
     ) 
    ) 
); 

// get results 
$the_query = new WP_Query($args); 

아이디어는 형태로 사용자 입력의 결과에 따라, 내 meta_query 값 조항의 수를 변경할 것입니다 ... (작업을 수행하는) 다음 예제 코드를 가져 가라. 위의 코드에는 두 가지 옵션이 있지만 입력에 따라 3 또는 다른 시간이 5 일 수 있습니다.

$ args의 외부에서 이러한 내부 배열 요소를 컴파일하려고했습니다. 다음 코드에서 $ inputArray는 문자열 요소의 단일 차원 배열이라고 가정합니다. 테스트는 다음과 같이 보입니다 :

$inputArray=array(); 
if (is_array($yearsArray)){ 
    foreach($yearsArray as $year) { 
     $inputArray[]=array('key' => 'years','value' => $year,'compare' => 'LIKE'); 
    } 
} 



// args 
$args = array(
    'numberposts' => -1, 
    'posts_per_page' => -1, 
    'post_type' => 'skills', 
    'meta_query' => array(
     'relation' => 'OR', 
     $inputArray 
    ) 
); 

그러나 메타 쿼리 쿼리가 적용되지 않은 것처럼 쿼리가 실행됩니다.

또한 wp_parse_args 함수를 사용하여 여러 개의 meta_queries를 병합하려고했지만 값을 덮어 쓰고 마지막 것이 사용 된 것으로 보입니다. 이 모양은 다음과 같습니다.

// args 
$args = array(
    'numberposts' => -1, 
    'posts_per_page' => -1, 
    'post_type' => 'skills' 

); 

$args2 = array(
    'meta_query' => array(
     'relation' => 'OR', 
     array(
      'key' => 'years', 
      'value' => 'Secondary', 
      'compare' => 'LIKE' 
     ) 
    ) 
); 
$args3 = array(
    'meta_query' => array(
     'relation' => 'OR', 
     array(
      'key' => 'years', 
      'value' => 'Primary', 
      'compare' => 'LIKE' 
     ) 
    ) 
); 

$args=wp_parse_args($args,$args2,$args3); 

이렇게 여러 가지 방법을 시도했지만 아무도 작동하지 않습니다. 아무도 도와 줄 수 있습니까?

답변

0

IN을 비교 절로 사용할 수 있음을 발견했습니다. $ yearsArray는 문자열 값의 단일 차원 배열이었습니다.

$args = array(
    'numberposts' => -1, 
    'posts_per_page' => -1, 
    'post_type' => 'skills', 
    'meta_query' => array(
     array(
      'key' => 'years', 
      'value' => $yearsArray, 
      'compare' => 'IN' 
     ) 
    ) 
); 
관련 문제