Ich werde immer wieder gefragt, wie man denn eine Kategorie von der Shop-Seite bei WooCommerce verstecken kann.

Hier ist der einfache Codesnippet für euch:

Gebt den einfach in euer Functions.php File ein und ersetzt «unkategorisiert» mit dem Name eurer ungeliebten Kategorie. Dann speichert ihr es ab und lädt es via FTP hoch in euer Child-Ordner und voila – die Kategorie wird nicht mehr angezeigt:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
add_filter( 'get_terms', 'exclude_category', 10, 3 );
function exclude_category( $terms, $taxonomies, $args ) {
    $new_terms = array();
    if ( is_shop() ){
        foreach ( $terms as $key => $term ) {
            if( is_object ( $term ) ) {
                if ( 'unkategorisiert' == $term->slug && $term->taxonomy = 'product_cat' ) {
                    unset($terms[$key]);
                }
            }
        }
    }
    return $terms;
}

In einem Kommentar unten wurde ich gefragt, wie denn das ganze funktionieren würde, wenn man mehrere Kategorien ausblenden möchte und oder sogar solche aus einer anderen Sprache.

Die Antwort ist hier auch sehr einfach – passt einfach die Slug der zu versteckenden Kategorie an. Der die das Slug (weiss nicht wie es korrekt heisst) ist ja der einzigartige URL Abschnitt für die Kategorie. Die müsst ihr einfach auslesen und dann verwenden.

In diesem Fall habe ich jetzt die Kategorie haare, essen food und hair versteckt. Wie ihr sehen könnt es ist nicht so schwer. Ihr müsst einfach die IF Abfrage kopieren und unten hinzufügen.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
add_filter( 'get_terms', 'exclude_category', 10, 3 );
function exclude_category( $terms, $taxonomies, $args ) {
    $new_terms = array();
    if ( is_shop() ){
        foreach ( $terms as $key => $term ) {
            if( is_object ( $term ) ) {
                if ( 'essen' == $term->slug && $term->taxonomy = 'product_cat' ) {
                    unset($terms[$key]);
                }
				if ( 'haare' == $term->slug && $term->taxonomy = 'product_cat' ) {
                    unset($terms[$key]);
                }
				if ( 'food' == $term->slug && $term->taxonomy = 'product_cat' ) {
                    unset($terms[$key]);
                }
				if ( 'hair' == $term->slug && $term->taxonomy = 'product_cat' ) {
                    unset($terms[$key]);
                }
            }
        }
    }
    return $terms;
}