2014-09-25 31 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和數組

$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

好吧,我沒有找到通過序列化數組進行搜索的方式,但我找到了解決這個問題的方法。

所以我沒有更改管理中的任何字段,而是增加了一個循環。所以我有這個字段名爲rbwwcategoryhidden[],創建這個數組。我去系列化數組,創造了每個值的新領域:

$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' 
); 
} 

和它的工作原理只是完美:)

相關問題