计算特定产品类别的购物车项目
Counting cart-items of specific product category
我正在尝试从 WooCommerce 中的特定产品类别中获取购物车中的商品数量。
我正在为酒厂做网站。它有酒精和非酒精产品。所有葡萄酒都属于 'wine' 或类别 ID 34 的主要类别,其下还有许多子类别和产品。
对于属于该类别的任何商品...我需要知道该类别下购物车中有多少商品。如果有六瓶酒,无论它们都是相同的产品 ID 还是 6 个不同的产品 ID。我需要从 'wine' 的类别或 34 的类别 ID 中获取数字 6。
我试过了,但没有成功。
我对 WooCommerce 很陌生,对面向对象也有点陌生。
谢谢
function cat_cart_count( $cat_name ) {
// $cat_name variable is for you normally "tshirts" or "shorts"
global $woocommerce; $cat_count = 0;
// For each product in the cart
foreach(WC()->cart->get_cart() as $cart_item_key => $values) {
$_product_id = $values['product_id']; // product ID
$_product_qty = $values['quantity']; // product quantity
// Getting categories of the product (could be more than one)
$terms = get_the_terms( $_product_id, 'product_cat' );
// Checking this product has a category
if ( $terms && ! is_wp_error( $terms ) ) {
$term_name = array();
// For each category of that product
foreach($terms as $term) {
// Adding the category name to an array
$term_name[] = $term->name;
// if the product has $cat_name category
if ( in_array( $cat_name, $term_name ) ) {
// add 1 x product quantity to the count
$cat_count =+ 1 * $_product_qty;
}
}
}
}
试试这个
我从互联网上复制了这段代码并进行了更新以适合您的情况
function check_product_in_cart() {
global $woocommerce;
// id of targeted category is 5 for example
$product_count = 0;
// start of the loop that fetches the cart items
foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $values ) {
$_product = $values['data'];
$terms = get_the_terms( $_product->id, 'product_cat' );
// second level loop search, in case some items have several categories
foreach ($terms as $term) {
$_categoryid = $term->term_id;
if (( $_categoryid === 5 ) {
$product_count=+ 1 * $_product_qty; ;
}
}
}
return $product_count;
}
Wordpress 条件函数 has_term()
接受类别 ID、slug、名称或该值的数组。
所以这是完成它的更短和更简单的方法。您的代码将更加紧凑和轻便。您可以直接使用您的类别 ID 34.
这是你的函数:
function cat_cart_count( $cat_name ) {
$cat_count = 0;
// Iterating through each cart item
foreach(WC()->cart->get_cart() as $cart_item)
if( has_term( $cat_name, 'product_cat', $cart_item['product_id']))
$cat_count += $cart_item['quantity'];
return $cat_count;
}
此代码已经过测试且功能齐全。
Usage of your function using for example echo
to display the value for 34
category ID:
echo cat_cart_count( 34 );
使用此代码
function cat_cart_count( $cat_name ) {
$cat_count = 0;
// Iterating through each cart item
foreach(WC()->cart->get_cart() as $cart_item)
if( has_term( $cat_name, 'product_cat', $cart_item['product_id']))
$cat_count += $cart_item['quantity'];
return $cat_count;
}
echo cat_cart_count('all-friends');
我正在尝试从 WooCommerce 中的特定产品类别中获取购物车中的商品数量。
我正在为酒厂做网站。它有酒精和非酒精产品。所有葡萄酒都属于 'wine' 或类别 ID 34 的主要类别,其下还有许多子类别和产品。
对于属于该类别的任何商品...我需要知道该类别下购物车中有多少商品。如果有六瓶酒,无论它们都是相同的产品 ID 还是 6 个不同的产品 ID。我需要从 'wine' 的类别或 34 的类别 ID 中获取数字 6。
我试过了,但没有成功。
我对 WooCommerce 很陌生,对面向对象也有点陌生。
谢谢
function cat_cart_count( $cat_name ) {
// $cat_name variable is for you normally "tshirts" or "shorts"
global $woocommerce; $cat_count = 0;
// For each product in the cart
foreach(WC()->cart->get_cart() as $cart_item_key => $values) {
$_product_id = $values['product_id']; // product ID
$_product_qty = $values['quantity']; // product quantity
// Getting categories of the product (could be more than one)
$terms = get_the_terms( $_product_id, 'product_cat' );
// Checking this product has a category
if ( $terms && ! is_wp_error( $terms ) ) {
$term_name = array();
// For each category of that product
foreach($terms as $term) {
// Adding the category name to an array
$term_name[] = $term->name;
// if the product has $cat_name category
if ( in_array( $cat_name, $term_name ) ) {
// add 1 x product quantity to the count
$cat_count =+ 1 * $_product_qty;
}
}
}
}
试试这个 我从互联网上复制了这段代码并进行了更新以适合您的情况
function check_product_in_cart() {
global $woocommerce;
// id of targeted category is 5 for example
$product_count = 0;
// start of the loop that fetches the cart items
foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $values ) {
$_product = $values['data'];
$terms = get_the_terms( $_product->id, 'product_cat' );
// second level loop search, in case some items have several categories
foreach ($terms as $term) {
$_categoryid = $term->term_id;
if (( $_categoryid === 5 ) {
$product_count=+ 1 * $_product_qty; ;
}
}
}
return $product_count;
}
Wordpress 条件函数 has_term()
接受类别 ID、slug、名称或该值的数组。
所以这是完成它的更短和更简单的方法。您的代码将更加紧凑和轻便。您可以直接使用您的类别 ID 34.
这是你的函数:
function cat_cart_count( $cat_name ) {
$cat_count = 0;
// Iterating through each cart item
foreach(WC()->cart->get_cart() as $cart_item)
if( has_term( $cat_name, 'product_cat', $cart_item['product_id']))
$cat_count += $cart_item['quantity'];
return $cat_count;
}
此代码已经过测试且功能齐全。
Usage of your function using for example
echo
to display the value for34
category ID:echo cat_cart_count( 34 );
使用此代码
function cat_cart_count( $cat_name ) {
$cat_count = 0;
// Iterating through each cart item
foreach(WC()->cart->get_cart() as $cart_item)
if( has_term( $cat_name, 'product_cat', $cart_item['product_id']))
$cat_count += $cart_item['quantity'];
return $cat_count;
}
echo cat_cart_count('all-friends');