2014-09-25 4 views
1

그래서, 사용자 지정 게시물을 wp_query과 함께 반환하는 검색 양식이 있습니다. 이제 사용자 정의 필드와 특정 값이있는 게시물을 찾으십시오. catagories[]이라는 여러 개의 체크 박스가 있다고 가정 해 보겠습니다. 그래서 그것들을 저장하면 직렬화 된 배열을 db로 만듭니다. 이제 프런트 엔드에서 검색 할 필요가 있습니다. 값이 11입니다. 배열은 다음과 같습니다 : a:3:{i:1;s:2:"11";i:2;s:2:"33";i:3;s:2:"33";}. 그래서 여기에 문제가 온다, 나는이 직렬 배열에서 정보를 검색 할 수있는 방법을 값으로 모든 게시물을 찾아 11. 내 코드는 다음과 같습니다 데이타베이스에있는 값은, 단순한 직렬화 된 배열이 아닌 경우WordPress : meta_query and array

$args = array(
     'post_type'=>'paibcresume', 
     'posts_per_page' => 10, 
     'paged' => $paged, 
     'meta_query' => array(), 
      'tax_query' => array(), 
     'orderby' => 'date', 
      'meta_key' => '', 
     'order' => 'DESC' 
    ); 


     // BASIC SEARCH FORM 

     // Search by category 
     // rbsercategories 
     // rbwwcategoryhidden 
     if (isset($_GET['rbsercategories']) && !empty($_GET['rbsercategories'])) { 
     $args['meta_query'][] = array(
      'key'  => 'rbwwcategoryhidden', 
      'value' => $_GET['rbsercategories'], 
      'compare' => 'IN' 
     ); 
     } 

     $the_query = new WP_Query($args); 
     while ($the_query->have_posts()) : $the_query->the_post(); 

이 코드는 작동 문자열,하지만 배열과 함께 작동하지 않습니다 그래서 내가 뭘해야합니까?

답변

0

좋아, 내가 직렬화 된 배열을 통해 검색하는 방법을 찾지 못했지만, 해결 방법을 찾았습니다.

그래서 나는 admin의 모든 필드를 변경하지 않았으며, 대신 루프를 새로 추가했습니다. 그래서이 배열을 만드는 rbwwcategoryhidden[]이라는 필드가 있습니다. 그 배열로 unserialize 및 각 값에 대해 새 필드를 만들어 :

그래서 지금은 새로운 분야를 가지고, 내가 personaly 세 개의 필드 (사용자가 세 개의 체크 박스를 확인하실 수 있습니다)의 제한이
$wwCategory = get_post_custom_values('rbwwcategoryhidden'); 

foreach($wwCategory as $wwCategoryValue){$wwCategoryUnser = unserialize($wwCategoryValue);} 

$rbWwCatSearchCounter='0'; 

foreach($wwCategoryUnser as $catId){ 
    $rbWwCatSearchCounter++; 
    echo '<input type="text" name="rbwwcatforsearch'.$rbWwCatSearchCounter.'" id="rbwwcatforsearch'.$rbWwCatSearchCounter.'" value="'.$catId.'">'; 
} 

: rbwwcatforsearch1, rbwwcatforsearch2, rbwwcatforsearch3합니다. 그리고 그 어레이의 각 필드 값을 추가 : 11, 33, 33

를 지금은 단지 전단에서 meta_query 코드를 변경하고, 그 같다 :

// Search by category 
if (isset($_GET['rbsercategories']) && !empty($_GET['rbsercategories'])) { 
    $args['meta_query'][] = array(
    'key'  => array('rbwwcatforsearch1','rbwwcatforsearch2','rbwwcatforsearch3'), 
    'value' => (isset($_GET['rbsercategories'])?$_GET['rbsercategories']:array()), 
    'compare' => 'IN' 
); 
} 

하고 작동 그냥 완벽 :)