2016-06-26 129 views
1

這是我的搜索表單。我使用woocommerce。並且需要通過關鍵字和類別搜索產品。Woocommerce - 在產品類別中搜索

  <form role="search" method="get" action="<?php echo get_permalink(woocommerce_get_page_id('shop')); ?>"> 
      <div class="search-bar-select hidden-sm hidden-xs"> 
       <span></span> 
       <i></i> 
       <select name="category"> 
       <option value="" class="search-bar-select-text"><?php _e('[:ru]Все категории[:ro]Toate categoriile') ?></option> 
       <?php foreach(woo_category_list(FALSE) as $category) { ?> 
       <option value="<?php echo $category->slug; ?>"><?php echo $category->cat_name; ?></option> 
       <?php } ?> 
       </select> 
      </div> 
      <div class="search-bar-input"> 
       <input type="text" name="s" value="<?php echo get_search_query(); ?>" placeholder="<?php _e('[:ru]Поиск по сайту ...[:ro]Căutare pe site') ?>" /> 
      </div> 
      <input type="hidden" name="post_type" value="product" /> 
      <div class="search-bar-btn"> 
       <button type="submit"><i class="fa fa-search"></i></button> 
      </div> 
     </form> 

這是我的過濾代碼

function advanced_search_query($query) 
{ 
if($query->is_search()) { 
    // category terms search. 
    if (isset($_GET['category']) && !empty($_GET['category'])) { 
     $query->set('tax_query', array(array(
      'taxonomy' => 'product_cat', 
      'field' => 'slug', 
      'terms' => array($_GET['category'])) 
     )); 
    }  
    return $query; 
} 
} 
add_action('pre_get_posts', 'advanced_search_query', 1000); 

但WordPress的顯示所有類別的關鍵字的所有產品。 什麼是錯誤的?

+0

如果你在過濾函數裏放了一個'var_dump($ _ GET)',它會輸出什麼? –

+0

也作爲一個說明 - 你不需要'返回$查詢'。 –

+0

最後提示 - 您可能想要 - 而不是'$ query-> set' - 使用此處推薦的結構:http://wordpress.stackexchange.com/a/98143 –

回答

0

你可以這樣做與掛鉤

只需將類別輸入的「名稱」屬性更改爲「product_cat」。

這樣的鉤去掉,並改變你的代碼是這樣的:

<form role="search" method="get" action="<?php echo get_permalink(woocommerce_get_page_id('shop')); ?>"> 
      <div class="search-bar-select hidden-sm hidden-xs"> 
       <strong textspan></span> 
       <i></i> 
       <select name="product_cat"> 
       <option value="" class="search-bar-select-text"><?php _e('[:ru]Все категории[:ro]Toate categoriile') ?></option> 
       <?php foreach(woo_category_list(FALSE) as $category) { ?> 
       <option value="<?php echo $category->slug; ?>"><?php echo $category->cat_name; ?></option> 
       <?php } ?> 
       </select> 
      </div> 
      <div class="search-bar-input"> 
       <input type="text" name="s" value="<?php echo get_search_query(); ?>" placeholder="<?php _e('[:ru]Поиск по сайту ...[:ro]Căutare pe site') ?>" /> 
      </div> 
      <input type="hidden" name="post_type" value="product" /> 
      <div class="search-bar-btn"> 
       <button type="submit"><i class="fa fa-search"></i></button> 
      </div> 
     </form> 

列出所有產品的貓在下拉列表中,使用此方法:

而不是的foreach(woo_category_list( FALSE)作爲$ category))

<?php 
$args = array(
    'taxonomy' => 'product_cat', 
    'name' => 'product_cat', 
    'value_field' => 'slug', 
    'class' => 'something' 
); 
wp_dropdown_categories($args); 

?> 
相關問題