Alle Kategorien auch ohne Produkte darunter?

Ich versuche, alle Kategorien zu bekommen, die Produkte haben, aber auch die Kategorien, die keine Produkte haben.

WordPress Version 4.6.1

wp_dropdown_categories( array( 'class' => 'product-category-field', 'id' => 'product-category', 'name' => 'category', 'taxonomy' => 'product_cat', 'selected' => get_query_var('product_cat' ), 'hierarchical' => 1, 'hide_empty' => 1, 'value_field' => 'slug', 'show_count' => 1 ) ); 

Sogar get_terms zeigt leere Kategorien mit dem folgenden Code an.

  0 )); if( $terms ): $original_query = $wp_query; foreach ( $terms as $key => $term ): ?> 
  • name; ?>
      $term->term_id, 'hide_empty' => true ) ); foreach ( $child_terms as $child_term ) { $re_child_terms = get_terms( 'product_cat', array( 'child_of' => $child_term->term_id, 'hide_empty' => true ) ); if ( ! $re_child_terms ){ ?>
    • name; ?>
  • Hinweis: In beiden Fällen möchten Sie keine Kategorien mit null Produkten anzeigen.

    Solutions Collecting From Web of "Alle Kategorien auch ohne Produkte darunter?"

    Dies ist sehr einfach, um alle Kategorien aufzulisten, auch wenn ihnen keine Beiträge zugeordnet sind.

    Sie müssen nur die folgende Eigenschaft in wp_dropdown_categories auf false setzen . Methode.

     'hide_empty' => 0, 'hide_if_empty' => 1 

    Hoffe das wird dein Problem lösen.

    wc_product_dropdown_categories() wird den Trick anstelle von wp_dropdown_categories() .

    Für get_terms Teil

    Durch Ersetzen

     $re_child_terms = get_terms( 'product_cat', array( 'child_of' => $child_term->term_id, 'hide_empty' => true ) ); if ( ! $re_child_terms ){ 

    mit

      $re_child_terms = get_term_children( $child_term->term_id, 'product_cat' ); if ( $child_term->count > 0 && empty( $re_child_terms ) ){ 

    triggerse mein Problem.

    Nicht sicher, aber ich denke, das Problem mit get_terms ist hier

     // Make sure we show empty categories that have children. if ( $hierarchical && $args['hide_empty'] && is_array( $terms ) ) { foreach ( $terms as $k => $term ) { if ( ! $term->count ) { $children = get_term_children( $term->term_id, $term->taxonomy ); if ( is_array( $children ) ) { foreach ( $children as $child_id ) { $child = get_term( $child_id, $term->taxonomy ); if ( $child->count ) { continue 2; } } } // It really is empty. unset( $terms[ $k ] ); } } }