Wie kann ich die Produktanzahl in jeder Kategorie wie dem WooCommerce-Backend abrufen?

Lesezeit: 3 Minuten

Benutzer-Avatar
Ethan Clayton

Ich baue eine neue Website und fühle mich mit Woocommerce ziemlich wohl. Ich brauche nur einen schnellen Trick, um die Produktanzahl in jeder Kategorie zu ermitteln. Ich rufe bereits die Kategorie für jedes Produkt auf, kann aber nicht herausfinden, wie ich die Produktanzahl aus dieser Kategorie abrufen kann.

Ich habe einen Listenstil für meine Produkte (eigentlich Aktivitäten für eine Aktivitätsseite). Bild ansehen.

Ich möchte nur die Anzahl der “Aktivitäten” neben der Kategorie wiedergeben. So komme ich zu meiner Kategorie:

echo $product->get_categories( ', ', '<span class="posted_in">' . _n( 'Category:', 'Categories:', sizeof( get_the_terms( $post->ID, 'product_cat' ) ), 'woocommerce' ) . ' ', '.</span>' );

Ich habe versucht, die Zählung zu erhalten, indem ich Folgendes verwendete:

$numposts = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->posts WHERE post_status="publish"");
echo $numposts;

Aber es gibt eine seltsame Zahl wieder. Ich habe ein paar Variationen dieser Abfrage ausprobiert und nach Produkten und dergleichen gefragt.

[update]

Folgendes konnte ich tun:

<li><?php 
$cat1 = $product->get_categories( ', ', '<span class="posted_in">' . _n(     'Category:', 'Categories:', sizeof( get_the_terms( $post->ID, 'product_cat' ) ),  'woocommerce' ) . ' ', '.</span>' ); 
echo $cat1;
/* 
$args = array( 'taxonomy' =>  'product_cat' ); 
$terms = get_terms('product_cat', $args); 
echo count($terms);
*/ 
$args = array( 'post_type' => 'product',  'taxonomy' => $cat1[0] ); 
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post(); 
    echo count( $loop->post->ID ) 
endwhile; 
wp_reset_query(); // Remember to reset 
?></li>

Aber es zählt tatsächlich alle Produkte in allen Kategorien in Schritten von “1” … Anstatt also “Kategorie: abc hat “3” Produkt” zu wiederholen, gibt es “Kategorie: abc hat “1 1 1 1 1 1 1” wieder “

Ich weiß, dass es einen einfachen Filter gibt, den ich hier machen kann, ich fühle mich, als wäre ich genau dort.

  • Beobachtungen: 1) Benutz nur offen <?php und schließen ?> -Tags, um PHP von HTML zu trennen. Es ist kein Zeilenumbruch. 2) Organisieren Sie Ihren Code, damit Sie nicht verrückt werden. Es ist viel einfacher zu debuggen und zu lesen. Sehen Kodierungsstandards. 3) Verwenden var_dump und print_r um Ihre Variablen zu überprüfen.

    – Brasilo

    13. Juli 2013 um 2:10 Uhr

Beide Funktionen get_term und get_terms gibt Objekte zurück, die bereits die Kategorieanzahl enthalten.

Wenn Sie wollen alles abrufen WooCommerce-Produktkategorien und deren Beitragszähler drucken:

$terms = get_terms( 'product_cat' );
// DEBUG
// var_dump( $terms ); 
foreach( $terms as $term ) 
{
    echo 'Product Category: '
        . $term->name
        . ' - Count: '
        . $term->count;
}       

Wenn Sie überprüfen möchten einziger Kategorie, deren ID Sie zuvor kennen:

$term = get_term( 16, 'product_cat' ); // <--- tested in my system with this ID
echo 'Product Category: '
    . $term->name
    . ' - Count: '
    . $term->count;

Benutzer-Avatar
Ethan Clayton

Ok, danke, dass du mich auf den richtigen Weg gebracht hast, brasofilo, ich bin mir sicher, dass ich einige Redundanzen habe, aber das bringt mir, was ich brauche.

<?php $cat1 = $product->get_categories( ', ', '<span class="posted_in">' . _n(       'Category:', 'Categories:', sizeof( get_the_terms( $post->ID, 'product_cat' ) ), 'woocommerce' ) . ' ', '</span>' ); 

//get the category ID and permalink
$term_list = wp_get_post_terms($post->ID,'product_cat',array('fields'=>'ids'));
$cat_id = (int)$term_list[0];
$term = get_term( $cat_id, 'product_cat' ); 

//echo the category, product count, and link
echo  $cat1 . '<a href="https://stackoverflow.com/questions/17559492/. get_term_link ($cat_id,"product_cat') .'>' . ' See all ' .   $term->count . ' Activities</a>';


?>

1364310cookie-checkWie kann ich die Produktanzahl in jeder Kategorie wie dem WooCommerce-Backend abrufen?

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

Privacy policy