2016-06-26 4 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); 

하지만 워드 프레스는 키워드로 모든 범주에서 모든 제품을 보여줍니다. 무엇이 잘못 되었습니까?

+0

필터 함수 안에'var_dump ($ _ GET) '를 넣으면 출력은 어떻게됩니까? –

+0

또한 메모로 -'return $ query' 할 필요가 없습니다. –

+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); 

?> 
관련 문제