Dieser kurze Beitrag zeigt, wie man in WooCommerce Kategorien auf Shop-Seiten und in der Produkt-Suche verstecken kann. Wir benutzen dazu das folgende Code Snippet:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
add_filter( 'get_terms', 'ts_get_subcategory_terms', 10, 3 ); add_action( 'pre_get_posts', 'remove_categories_from_search_results',99 ); function ts_get_subcategory_terms( $terms, $taxonomies, $args ) { $new_terms = array(); // if it is a product category and on the shop page if ( in_array( 'product_cat', $taxonomies ) && ! is_admin() && is_shop() ) { foreach( $terms as $key => $term ) { if ( !in_array( $term->slug, array( 'uncategorised','unkategorisiert' ) ) ) { $new_terms[] = $term; } } $terms = $new_terms; } return $terms; } function remove_categories_from_search_results( $query ) { if ( ! is_admin() && $query->is_main_query() && $query->is_search() ) { $query->set( 'post_type', array( 'product' ) ); $tax_query = array( array( // likely what you are after 'taxonomy' => 'product_cat', 'field' => 'slug', 'terms' => array('uncategorised', 'unkategorisiert'), 'operator' => 'NOT IN', ), ); $query->set( 'tax_query', $tax_query ); } } |
Die zu versteckenden WooCommerce-Kategorien müssen den Arrays in Zeile 9 und 30 hinzugefügt werden.
Hallo Hschneider,
vielen Dank funktioniert soweit aber:
Ich nutze in meinem Woo Commerce Shop zusätzlich das Plugin Request a Quote. dh. den Artikel X kann man nicht kaufen sondern nur Anfragen. Jetzt wollte ich alle Artikel die man anfragen kann einer Kategorie zuordnen. Diese Kategorie wollte ich in der Navi dann komplett ausblenden. Ausblenden funktioniert wunderbar gemäß der Anleitung, leider funktioniert aber das Request a Quote Plugin nicht mehr und das Produkt kann man wieder kaufen anstatt “nur” anzufragen. Was mache ich falsch?
Hallo Max,
diese Frage kann wahrscheinlich nur der Programmierer des Plugins beantworten.
Das Einzige was mir dazu einfällt:
Eventuell muss das Plugin vor oder nach dem o.g. Filter ausgeführt werden. Teste doch mal unterschiedliche Prioritäten, d.h. in Zeile 2 anstatt 99 mal die Werte 1,10,50,500, 1000.
Ich nochmal, jetzt funktioniert es. Aber bei “Neu eingetroffen” werden die Kategorien noch angezeigt. Haben sie da auch eine Lösung?
Die Liste der Kategorien einfach in Zeile 9 und 30 mit den passenden Namen ergänzen. Jede dort aufgeführte Kategorie wird ausgeblendet.
Guten Tag,
sehr interessant. Aber in welchem Script müssen diese Funktionen hinzugefügt werden.
Grüsse, Alfred Janssen
Am besten über ein Code Snippet Tool, z.B.
https://de.wordpress.org/plugins/code-snippets/