Support » WooCommerce » Produkte auf spezifischer Kategorieseite ausblenden

  • Gelöst stylebutton

    (@stylebutton)


    Hallo,

    ich würde gern die Produkte auf einer definierten Produktkategorieseite ausblenden.

    Hintergrund: Es handelt sich um eine Elternkategorie ohne Produkte, bei der die Unterkategorien in der functions.php ausgeblendet wurden (siehe unten). Obwohl in WooCommerce eingestellt ist, dass nur die Unterkategorien angezeigt werden sollen und keine Produkte, werden nun automatisch alle Produkte der Unterkategorien angezeigt. Das soll verhindert werden, damit nur die Kategoriebeschreibung zu sehen ist.

    Grundsätzlich müssen die Produkte aber auf der Unterkategorieseite zu sehen sein. Gibt es dafür eine Lösung?

    add_filter( 'get_terms', 'get_subcategory_terms', 10, 3 );
    
    function get_subcategory_terms( $terms, $taxonomies, $args ) {
    
      $new_terms = array();
    
      // if a product category and on the shop page
      if ( in_array( 'product_cat', $taxonomies ) && ! is_admin() && is_product_category( 'buttons' ) ) {
    
        foreach ( $terms as $key => $term ) {
    
          if ( ! in_array( $term->slug, array( 'buttons-nadel-verschluss', 'buttons-mit-clip', 'spiegelbuttons', 'kleidungsmagnete' ) ) ) {
            $new_terms[] = $term;
          }
    
        }
    
        $terms = $new_terms;
      }
    
      return $terms;
    }

    Die Seite, für die ich Hilfe brauche: [Anmelden, um den Link zu sehen]

Ansicht von 3 Antworten - 1 bis 3 (von insgesamt 3)
  • Moderator espiat

    (@espiat)

    Anmerkung (Hilft vielleicht schon weiter):

    Die Funktion hängt davon ab, ob du eingeloggt bist:

    if ( in_array( ‚product_cat‘, $taxonomies ) && ! is_admin() && is_product_category( ‚buttons‘ ) ) {

    Danke für Deine Anmerkung. 🙂 Das ‚is_admin()‘ habe ich mal auskommentiert.
    Die Funktion entfernt allerdings nur die per Slug definierten Kategorien. Insofern sind die Produkte trotzdem zu sehen…

    Hier die Lösung:

    /** Entfernt Unterkategorien aus Kategorie Buttons **/
    add_filter( 'get_terms', 'get_subcategory_terms', 10, 3 );
    
    function get_subcategory_terms( $terms, $taxonomies, $args ) {
    
      $new_terms = array();
    
      // if a product category and on the shop page
      if ( in_array( 'product_cat', $taxonomies ) && ! is_admin() && is_product_category( 'buttons' ) ) {
    
        foreach ( $terms as $key => $term ) {
    
          if ( ! in_array( $term->slug, array( 'slug' ) ) ) { // slug -> Sub categories to hide
            $new_terms[] = $term;
          }
    
        }
    
        $terms = $new_terms;
      }
    
      return $terms;
    }
    /**
    
     * Exclude products from a particular category on the shop page, but not from sub categories
    
    */
    add_action( 'woocommerce_product_query', 'hideproduct_pre_get_posts_query' );  
    
    function hideproduct_pre_get_posts_query( $q ) {
    
     if (!is_admin() && is_product_category( 'slug' ) && is_main_query()) { // hide only at category slug
    
        $tax_query = (array) $q->get( 'tax_query' );
        $tax_query[] = array(
               'taxonomy' => 'product_cat',
               'field' => 'slug',
               'terms' => array( 'slug' ), // Don't display products from this category
               'operator' => 'NOT IN'
        );
     }
        $q->set( 'tax_query', $tax_query );
    }
    • Diese Antwort wurde geändert vor 5 Monate, 2 Wochen von  stylebutton.
Ansicht von 3 Antworten - 1 bis 3 (von insgesamt 3)