在WooCommerce中更新购物车小计

时间:2017-05-11 12:16:23

标签: php wordpress woocommerce cart hook-woocommerce

我想在WooCommerce中更新购物车小计。

如何在WooCommerce中添加修改小计的操作?

我试过这个代码,但是没有用。我想将购物车小计乘以12并在购物车页面上显示此计算。

这是我的代码:

add_action( 'woocommerce_before_calculate_totals', 'add_custom_price' );
function add_custom_price( $total) {

    foreach ( $total->cart_contents as $key => $value ) {

        $modifiedtotal = $total->subtotal * 12; 
        // --------------------------------
        //how can get subtotal with multiply by 12 and it should be show on cart page.
    }
}

2 个答案:

答案 0 :(得分:4)

你正在使用正确的钩子,这是Woocommerce版本2.6x到3.0+的功能和测试代码,这将是的技巧(而你可以在购物车项目上进行计算,你会得到同样的事情)

add_action( 'woocommerce_before_calculate_totals', 'add_custom_price', 10, 1);
function add_custom_price( $cart_object ) {

    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

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

    foreach ( $cart_object->get_cart() as $cart_item ) {
        ## Price calculation ##
        $price = $cart_item['data']->price * 12;

        ## Set the price with WooCommerce compatibility ##
        if ( version_compare( WC_VERSION, '3.0', '<' ) ) {
            $cart_item['data']->price = $price; // Before WC 3.0
        } else {
            $cart_item['data']->set_price( $price ); // WC 3.0+
        }
    }
}

代码放在活动子主题(或主题)的function.php文件中,或者放在任何插件文件中。

  

<强>说明:

     

使用基于购物车小计的计算,将仅显示小计购物车行行的计算,而不会更新购物车商品,购物车商品行小计和购物车总数。

你可以看到它尝试WooCommerce版本2.6.x和3.0 +的这个工作代码:

add_action( 'woocommerce_calculate_totals', 'add_custom_price', 10, 1);
function add_custom_price( $cart_object ) {

    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

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

    $cart_object->subtotal *= 12;
}

代码放在活动子主题(或主题)的function.php文件中,或者放在任何插件文件中。

答案 1 :(得分:0)

使用'woocommerce_calculate_totals'代替'woocommerce_before_calculate_totals'