计算特定产品类别的购物车商品

问题描述 投票:0回答:4

我正在尝试仅从 WooCommerce 中的特定产品类别获取购物车中的商品数量。

我正在为一家酒厂做一个网站。它有酒精和非酒精产品。所有葡萄酒都属于“葡萄酒”主类别或类别 ID 34,其下有许多子类别和产品。

对于属于此类别的任何商品...我需要知道此类别下的购物车中有多少商品。如果有六瓶酒,无论它们是相同的产品ID还是6个不同的产品ID。我需要从“葡萄酒”类别或类别 ID 34 中获取数字 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;
            }
        }
    }
}
php wordpress woocommerce cart custom-taxonomy
4个回答
9
投票

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

此代码已经过测试并且功能齐全。

使用您的函数,例如使用

echo
显示
34
类别 ID 的值:

echo cat_cart_count( 34 );

0
投票

试试这个 我从互联网上复制了这段代码并进行了更新以适合您的情况

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

0
投票

使用此代码

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');

0
投票

请问我必须在哪里插入此代码?

© www.soinside.com 2019 - 2024. All rights reserved.