我想在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.
}
}
答案 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'