wordpress WooCommerce简码显示特定产品的购物车徽章中的当前数量

mi7gmzs6  于 11个月前  发布在  WordPress
关注(0)|答案(1)|浏览(166)

我试图创建一个自定义的WooCommerce简码(在简码中有一个“产品ID”属性),它将显示客户当前在其购物车中的特定项目的当前数量。
我有一个良好的开端,我的简码是正确显示单一/简单的产品,但有一个问题,当涉及到产品有多个变化。我想简码显示总数量为父产品;它没有必要显示数量为每个变化。
例如,如果客户的购物车有:

  • 产品-小号(推车中x2)
  • 产品-中号(购物车中x1)
  • 产品-大号(推车中x3)

我想让代码显示6。
我想我可以通过使用WC()->cart->get_cart()来做到这一点,并确保使用$cart_item['product_id']而不是$cart_item['variation_id'],但尽管我使用了'product id',shortcode属性是父产品的id,它只显示最近添加到购物车的任何变化的购物车数量。
任何想法,我如何可以调整这一点,以显示在购物车总和的所有变化下的父产品?
下面是我目前为止的代码:

if( !function_exists('in_cart_product_quantity') ) {
    function in_cart_product_quantity( $atts ) {

        $atts = shortcode_atts(array('id' => ''), $atts, 'cart_qty_badge');
        if( empty($atts['id'])) return; 

        if ( WC()->cart ) { 
           $qty = 0; 
            foreach (WC()->cart->get_cart() as $cart_item) {
                if($cart_item['product_id'] == $atts['id']) {
                    $qty =  $cart_item['quantity'];
                   
                }
            }
            return $qty;
        }
        return;
    }
    add_shortcode( 'cart_qty_badge', 'in_cart_product_quantity' );
}

字符串

w1e3prcc

w1e3prcc1#

使用以下方法代替,当购物车中的特定可变产品有多个变化时,应该可以解决您的问题:

if( ! function_exists('get_product_quantity_in_cart') ) {
    function get_product_quantity_in_cart( $atts ) {
        // Extract shortcode attributes
        extract( shortcode_atts( array(
            'id' => '',
        ), $atts, 'cart_qty_badge' ) );
        
        if( empty($id) || WC()->cart->is_empty() ) return; 

        $total_qty = 0; 
        
        foreach ( WC()->cart->get_cart() as $cart_item ) {
            if( $cart_item['product_id'] == $id ) {
                $total_qty += $cart_item['quantity'];
            }
        }
        return $total_qty > 0 ? $total_qty : '';
    }
    add_shortcode( 'cart_qty_badge', 'get_product_quantity_in_cart' );
}

字符串
应该能用

相关问题