类似问题:WooCommerce Dynamic Cart Pricing
function odb_add_length_price( $cart_object ) {
if( !(is_admin() && !defined(\'DOING_AJAX\'))) {
foreach ( $cart_object->get_cart() as $cart_item ) {
$price = $cart_item[\'data\']->get_price();
$price = 1 + $price;
$cart_item[\'data\']->set_price( $price );
}
}
}
add_action( \'woocommerce_before_calculate_totals\', \'odb_add_length_price\', 10, 1);
如果产品价格设置为100,则总计应为101。返回的价格设置为103,出于某种原因,它会乘以3。
如果我删除$价格并将静态值设置为100,则返回的价格为101。
如果我只返回价格,则价格返回为100。
所以每次我合并或计算get\\u price加x,它就会乘以3。
最合适的回答,由SO网友:Nicolai Byø Friis 整理而成
解决方案是添加remove_action( \'woocommerce_before_calculate_totals\', \'odb_add_length_price\', 10, 1);
在函数的第一行。
这会在每次运行时删除该函数,并按预期工作。