2016-06-26 14 views
1

Dies ist meine Suchmaske. Ich benutze Woocommerce. Und müssen Produkte nach Schlüsselwörtern und Kategorien suchen.Woocommerce - Suche in der Produktkategorie nach Stichworten

  <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> 

das ist mein Filtercode

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

aber Wordpress Zeige alle Produkte aus allen Kategorien nach Stichworten. Was ist falsch?

+0

Wenn Sie setzen eine 'var_dump ($ _ GET)' Innenseite der Filterfunktion, was sie ausgegeben hat? –

+0

Auch als eine Anmerkung - Sie müssen nicht $ query zurückgeben. –

+0

Letzter Tipp - Sie möchten vielleicht statt "$ query-> set" - die hier empfohlene Struktur verwenden: http://wordpress.stackexchange.com/a/98143 –

Antwort

0

können Sie dies tun ohne Haken.

einfach "Namen" für die Kategorie Eingabeattribut ändern "product_cat".

so den Haken entfernen und Ihr Code wie folgt ändern:

<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> 

alle Produkt Katzen in einer Dropdown-Liste aufzulisten, verwenden Sie diese Methode:

(statt foreach (woo_category_list (FALSCH) als $ category))

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

?>