Produktkategorie aus der Kategorieliste auf der Shop-Seite in Woocommerce ausblenden

Lesezeit: 2 Minuten

Benutzeravatar von Joe Bloggs
Max Mustermann

Ich wollte eine bestimmte Produktkategorie in der Kategorieliste auf der Woocommerce-Shopseite ausblenden. Ich habe dazu den folgenden Ausschnitt gefunden und verwendet:

add_filter( 'get_terms', 'exclude_category', 10, 3 );
function exclude_category( $terms, $taxonomies, $args ) {
  $new_terms = array();
  // if a product category and on a page
  if ( in_array( 'product_cat', $taxonomies ) && ! is_admin() && is_shop() ) 
  {
    foreach ( $terms as $key => $term ) {
      if ( ! in_array( $term->slug, array( 'books' ) ) ) {
        $new_terms[] = $term;
      }
    }
    $terms = $new_terms;
  }
  return $terms;
}

Ich habe eine Debug-Option in meiner wp-config auf „true“ gesetzt. Während das Snippet funktioniert und die Kategorie „Bücher“ in der Liste ausgeblendet ist, erhalte ich die folgende Fehlermeldung:

Notice:: Trying to get property of non-object in

Und es weist auf diese Zeile hin:

if ( in_array( 'product_cat', $taxonomies ) && ! is_admin() && is_shop() )

Ist diese Zeile richtig geschrieben? oder übersehe ich etwas?

LoicTheAztecs Benutzeravatar
LoicTheAztec

Aktualisiert: Sie sollten es besser verwenden unset() So entfernen Sie den Produktkategoriebegriff aus dem Array:

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 ( 'books' == $term->slug && $term->taxonomy = 'product_cat' ) {
                    unset($terms[$key]);
                }
            }
        }
    }
    return $terms;
}

Dieser Code wird in die Datei „function.php“ Ihres aktiven untergeordneten Themas (oder Themas) verschoben.

Getestet und funktioniert (wirft keinen Fehler aus).

  • Vielen Dank für Ihre Hilfe. Es funktioniert nur für das Widget, nicht jedoch für die Kategorienliste. Grundsätzlich habe ich auf meiner Shop-Seite direkt unter dem Shop-Titel eine Liste mit Kategorien. Es ist jedoch kein Widget. Der Code, den ich habe, funktioniert für diesen Fall und die unerwünschte Kategorie verschwindet aus der Liste, löst jedoch den oben erwähnten Benachrichtigungsfehler aus.

    – Max Mustermann

    18. Februar 2018 um 9:20 Uhr


  • Was passiert, wenn ich die Vorlage archive-product.php bearbeite? Die Liste der Kategorien wird mit angezeigt $terms = get_terms('product_cat'); Könnte ich die Kategorie stattdessen hier ausschließen?

    – Max Mustermann

    18. Februar 2018 um 9:28

  • @JoeBloggs Ich habe meinen Code aktualisiert … probieren Sie es aus. Diesmal sollte kein Fehler auftreten.

    – LoicTheAztec

    18. Februar 2018 um 10:37 Uhr

  • Danke, der Code funktioniert, aber ich bleibe trotzdem störrisch Notice :Trying to get property of non-object in auf diese Linie zeigen if ( 'books' == $term->slug && $term->taxonomy = 'product_cat' ) Könnte es etwas anderes sein? Widerspricht der Code?

    – Max Mustermann

    18. Februar 2018 um 22:12 Uhr

  • @JoeBloggs Ich erhalte diesen Fehler nicht … aber ich habe den Code mithilfe der PHP-Bedingung leicht aktualisiert is_object() auf der $term Um sicherzugehen, dass es sich um ein Objekt handelt (eine WP_Term-Objektinstanz) … Probieren Sie es also aus … Ich hoffe, dass es funktioniert.

    – LoicTheAztec

    18. Februar 2018 um 22:26


1450980cookie-checkProduktkategorie aus der Kategorieliste auf der Shop-Seite in Woocommerce ausblenden

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy