我根据访问者选择的选项创建了一个WooCommerce插件来自定义产品,并计算定制价格并将其存储到会话表中。
我也可以在购物车页面中获得该值。
我的问题:
我想更改产品的默认价格,并将其替换为WooCommerce流程中的新计算值,如购物车,结帐,付款,邮件通知,订单...
请问任何建议?
由于
答案 0 :(得分:4)
使用它的右键是 woocommerce_before_calculate_totals
。但是你必须完成(替换)代码才能在下面的钩子函数中获得新价格:
add_action( 'woocommerce_before_calculate_totals', 'custom_cart_items_prices', 10, 1 );
function custom_cart_items_prices( $cart ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
return;
// Loop Through cart items
foreach ( $cart->get_cart() as $cart_item ) {
// Get the product id (or the variation id)
$product_id = $cart_item['data']->get_id();
// GET THE NEW PRICE (code to be replace by yours)
$new_price = 500; // <== Add your code HERE
// Updated cart item price
$cart_item['data']->set_price( $new_price );
}
}
代码放在活动子主题(或主题)的function.php文件中,或者放在任何插件文件中。
此代码已经过测试,适用于WooCommerce版本3+。但是,由于您没有提供任何代码,我无法对其进行测试,以便从会话中获得新价格...