基于WooCommerce中购物车项目数量的附加价格 [英] Additional price based on cart item count in WooCommerce

查看:118
本文介绍了基于WooCommerce中购物车项目数量的附加价格的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

基于" woocommerce更改结帐和购物车中的价格"页面的答案代码,该代码会更改结帐页面中的总价格,我添加了一些额外的代码来计算用户在购物车中拥有的产品,如果用户喜欢购物车中有9种产品,则可以向其中添加一些价格总计:

Based on "woocommerce change price in checkout and cart page" answer code that change the total price in checkout page, I have added some extra code to count the products that user have in cart and if user had like 9 products in cart then add some price to total:

add_action( 'woocommerce_before_cart_totals', 'custom_cart_total' , 'get_cart_contents_count');
function custom_cart_total() {

    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
            return;
    if (WC()->cart->get_cart_contents_count() == 9){
        WC()->cart->total += 15;
    }
    elseif(WC()->cart->get_cart_contents_count() == 6){
       WC()->cart->total += 14; 
    }
    elseif(WC()->cart->get_cart_contents_count() == 4){
       WC()->cart->total += 13; 
    }

}

但是它不起作用.该图片将解释所有内容:

But it doesn't work. This image will explain everything:

如果有人可以更正代码并告诉我如何显示图片中的消息,我将不胜感激

I will appreciate if anyone could correct the code and tell me how can I display the message like in the picture

推荐答案

您最好通过以下方式使用FEE API:

You should better use the FEE API instead, this way:

// Add a custom packing fee based on item count
add_action( 'woocommerce_cart_calculate_fees', 'custom_packing_fee', 10, 1 );
function custom_packing_fee( $cart ) {
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    if ( did_action( 'woocommerce_cart_calculate_fees' ) >= 2 )
        return;

    $count = $cart->get_cart_contents_count();

    if ( $count >= 9 ){
        $fee = 15;
    }
    elseif( $count >= 6 && $count < 9 ){
        $fee = 14;
    }
    elseif( $count >= 4 && $count < 6 ){
        $fee = 13;
    }

    if ( isset($fee) && $fee > 0 ) {
        $label = sprintf( __('Box fee (%d items)'), $count);
        $cart->add_fee( $label, $fee, false );
    }
}

代码进入活动子主题(或活动主题)的functions.php文件中.经过测试,可以正常工作.

Code goes in functions.php file of your active child theme (or active theme). Tested and works.

如果要启用税金作为包装费,请将第三个参数从false更改为true.

If you want to enable taxes for the packing fee, change the third argument from false to true.

这篇关于基于WooCommerce中购物车项目数量的附加价格的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆