5

私は新しいサイトを構築していますが、Woocommerce にはかなり慣れています。各カテゴリの製品数を取得するための簡単なトリックが必要です。各製品のカテゴリを既に呼び出していますが、そのカテゴリから製品数を取得する方法がわかりません。

私は自分の製品 (実際にはアクティビティ サイトのアクティビティ) に使用するリスト スタイルを持っています。画像をチェックしてください

カテゴリの横にある「アクティビティ」の数をエコーアウトしたいだけです。これが私のカテゴリを取得する方法です:

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

次を使用してカウントを取得しようとしました:

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

しかし、それはいくつかの奇妙な数字をエコーし​​ ています。そのクエリのいくつかのバリエーションを試して、製品などを呼び出しました。

[アップデート]

これは私ができたことです:

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

しかし、実際には、すべてのカテゴリのすべての製品を「1」ずつ数えます....したがって、「category: abc has "3" product」をエコーする代わりに、「category: abc has "1 1 1 1 1 1 1」をエコーし​​ます。 "

ここでできる簡単なフィルターがあることを知っています。まさにそこにいるような気がします。

4

2 に答える 2

11

関数get_termと関数は両方ともget_terms、既にカテゴリ数を含むオブジェクトを返します。

すべてのWooCommerce 製品カテゴリを取得して投稿数を出力する場合:

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

以前に ID を知っている 1 つのカテゴリのみを確認する場合:

$term = get_term( 16, 'product_cat' ); // <--- tested in my system with this ID
echo 'Product Category: '
    . $term->name
    . ' - Count: '
    . $term->count;
于 2013-07-13T02:47:46.477 に答える
2

わかりましたので、ブラソフィロを正しい軌道に乗せてくれてありがとう、冗長性が続いていると確信していますが、これで必要なものが得られます。

<?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='. get_term_link ($cat_id, 'product_cat') .'>' . ' See all ' .   $term->count . ' Activities</a>';


?>
于 2013-07-15T22:58:54.970 に答える