Wie versteckt man eine Kategorie bei WooCommerce

von | Jan 7, 2019 | Technik | 21 Kommentare

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

21 Kommentare

  1. Julia

    „Wie versteckt man eine Kategorie bei WooCommerce“

    Sehr nützlich, vielen dank für das Bereitstellen der Info!
    Gibt es auch eine Möglichkeit, 2 Kategorien zu verstecken?
    Wenn ich den Code doppelt reinwerfe bekomme ich nen Fehler ausgespuckt.

    Vielen Dank, viele Grüße
    Julia

    Antworten
  2. Alex

    add_filter( ‚get_terms‘, ‚exclude_category‘, 10, 3 );
    function exclude_category( $terms, $taxonomies, $args ) {
    foreach ( $terms as $key => $term ) :
    if( is_object ( $term ) ) :
    if ( ‚unkategorisiert‘ == $term->slug || ’showcase‘ == $term->slug ||’favourites‘ == $term->slug ) :
    unset($terms[$key]);
    endif;
    endif;
    endforeach;
    return $terms;
    }

    Antworten
    • Linus

      Hallo Alex,
      vielen Dank für den sehr hilfreichen Code!

      Der Code zum Ausblenden einer Kategorie hat bei mir einwandfrei funktioniert. In meinem Fall müsste ich allerdings gleich mehrere Subkategorien ausblenden (teilweise sogar „Subsub“-Kategorien). Das scheint so ohne Weiteres leider nicht zu funktionieren…

      Hast Du dafür auch etwas im Zauberkästchen? 🙂

      Vielen lieben Dank vorab und ein schönes WE!

      Liebe Grüße,
      Linus

      Antworten
  3. thekla sebastian

    Herzlichen Dank für dieses nützliche Snippet. Damit konnte ich mein Problem lösen, dass manche Produkte kein Anfrage-Formular aufweisen sollten. Das betreffende Formular-Plugin erlaubte aber das Ausschliessen nur als ganze Kategorie. Einzelne Produkte aus Kategorien MIT Produkt-Anfrage-Formular , die es aber dennoch NICHT enthalten sollen, habe ich zusätzlich in die versteckte Kategorie gepackt. Diese versteckte Kategorie habe ich nun meinem Anfrage-Formular-Plugin als „exclude“ mitgeteilt. Resultat. alles prima!!!

    Antworten
    • Eric-Oliver Mächler

      es freut mich immer, wenn meine blogbeiträge meinen lesern helfen können 🙂

      Antworten
  4. Alexander

    Mir hat’s auch geholfen. Vielen Dank! Kannst Du mir evtl. auch noch mit einem Codeschnipsel weiterhelfen, der auch die Produkte der ausgeblendeten Kategorie ausblendet? Ich habe ein Pfandglas, das nur als verlinktes Produkt mit verkauft werden soll. Danke und Gruß, Alexander

    Antworten
    • Eric-Oliver Mächler

      ähm wenn eine kategorie versteckt ist, dann muss man da doch auch nicht die produkte ausblenden? oder wie meinst du das?

      Antworten
      • Philipp

        Guten Tag,
        danke erstmal für den guten Beitrag – Kategorie wird ausgeblendet. In meinem Fall werden „Gutscheine“ nicht im Shop mehr als Kategorie angezeigt (Sidebar links) – allerdings werden die Gutscheine selbst als Produkte mit angezeigt, obgleich die Kategorie nicht sichtbar ist.
        Wie kann man das denn umgehen?

        Antworten
  5. A. Schwaab

    Hallo Herr Mächler

    wir blenden wöchentlich eine Kategorie per Script aus und dafür eine andere ein. Die Produkte sind zum Teil verschiedenen/mehreren Kategorien zugeordnet.

    Können Sie mir sagen, ob ein Podukt automatisch auch in der Produktsuche nicht mehr gefunden wird, sofern keine einzige der Kategorien, in der der es sich befindet, angezeigt wird?

    Alternativ müssten wir ein Script machen, dass nach der Aktivierung/Deaktivierung immer alle Artikel durchläuft und prüft, ob ein Produkt deaktiviert werden muss.

    Antworten
    • Eric-Oliver Mächler

      guten morgen, nun es kommt ganz drauf an wie sie ihre kategorien verstecken. normalerweise aber sind die produkte auch bei einer versteckten kategorie noch sichtbar. ich würd mal checken ob die suchfunktion (eine schwachstelle von wordpress) hier korrekt eingestellt ist

      Antworten
  6. Tony

    Endlich hab ich was brauchbares gefunden! 😀
    Danke dir, hat mir echt gut geholfen.
    Viele Grüße

    Antworten
  7. benni

    funktioniert leider gar nicht

    Antworten
    • Eric-Oliver Mächler

      kommt ganz darauf an was du für ein theme hast und wie du den shop aufgebaut hast. dieser code funktioniert perfekt für den alten weg – wo woocommerce eine funktion eingebaut hatte- mit dem man die kategorien in der shop seite anzeigen konnte. heute ist das meistens überflüssig, da man die kategorien mit den meisten theme einzeln auswählen oder deaktivieren kann.

      tut mir leid, wenn dieser code nicht das ist was du suchst

      Antworten
  8. sabine

    hallo, eine Frage…
    ich habe zwei Hauptkategorien in meinem Shop
    1x doterra
    1x Sabines Zubehör Shop

    für beide habe ich ein spezielles design… ich bin erst am befüllen des Shops

    Ich würde gerne wenn ich auf die doterra-kategorie klicke alle Subkategorien bei Zubehör Shop ausblenden….
    klickt man dann aber auf Zubehör-Shop verschwinden die Subkategorien der Hauptkategorie doterra und subkategorien Zubehör-Shop sind wieder sichtbar…kann man diesen Code hier etwas adaptieren?
    Das Such-Tool soll unbeeinflusst bleiben, das kann ruhig weiterhin alles suchen und finden.
    hoffe das war einigermaßen verständlich… lg sabine

    Antworten
    • Eric-Oliver Mächler

      was für ein theme setzt du ein? evtl sogar ein pagebuilder?

      Antworten
      • Sabine Vals Frias

        Das theme ist divi von elegant themes, ich hatte deswegen an den support geschrieben, aber sie waren da nicht bereit weiterzuhelfen, weil das zum woo commerce gehört… so oder so ähnlich die Antwort.
        Sie sind ja sonst großartig im Service.

        Antworten
        • Eric-Oliver Mächler

          divi? na dann ist die antwort sogar noch einfacher – du kannst doch im divi builder für kategorien eine eigene seite erstellen. also kannst dir da recht schnell alles zusammenbauen

          Antworten
          • sabine

            Ja das habe ich schon gemacht…also das bei doterra nur die doterra Artikel kommen und bei Sabines Zubehör auch nur mein Zubehör…nur mit dem Widget auf der Seitenleiste…da wäre ein Traum wenn immer die gerade aktive Hauptkategorie mit Unterkategorien angezeigt wird…und die zweite Hauptkategorie ohne Unterkategorien…
            ich möcht gern beide Hauptkategorien in der Seitenleiste lassen damit der Kunde immer noch zu doterra springen kann…wenn er will…

  9. Alina

    Hallo Eric,

    ich konnte eine Kategorie mit deinem Code erfolgreich ausblenden! Danke dafür.
    Jetzt ist es aber so dass meine Seite zweisprachig ist und die Kategorie auf DE und EN (mit Ergänzung -en) existiert.

    Dein Code dafür mehrere Kategorien auszublenden führt leider zu einer Fehlermeldung. Hast du da vielleicht noch einen anderen Tipp?

    Liebe Grüße
    Alina

    Antworten
    • Eric-Oliver Mächler

      Hallo Alina
      Danke für deine Frage – ich habe den Beitrag gerade erweitert mit der Erklärung wie man mehrere Kategorien ausblenden kann und sogar welche in anderen Sprachen.
      Denke du solltest jetzt wissen wie du das für dich anpassen kannst damit es ohne Fehlermeldung funktioniert.

      Antworten
  10. Enno

    Super! Das erste Code-Snippet, das zu diesem Thema funktioniert hat!!
    Danke!

    Antworten

Einen Kommentar abschicken

Deine E-Mail-Adresse wird nicht veröffentlicht.