这是我目前拥有的代码:
add_action('woocommerce_cart_calculate_fees' , 'add_custom_fees');
function add_custom_fees( $cart ){
if (is_admin() && !defined('DOING_AJAX')) {
return;
}
$pizza_ice = 0;
$pizza_materials = 0;
$gravy_ice = 0;
$gravy_materials = 0;
$pizza_burger = 293;
$gravy = 462;
$pizza_in_cart = false;
$gravy_in_cart = false;
foreach( $cart->get_cart() as $item ){
$product_in_cart = $item['product_id'];
if ( $product_in_cart === $pizza_burger) {
$pizza_in_cart = true;
}
elseif ( $product_in_cart === $gravy) {
$gravy_in_cart = true;
}
}
if ( $pizza_in_cart != false ) {
$pizza_ice += $item['quantity'] * 27;
$pizza_materials += $item['quantity'] * 9.99;
$cart->add_fee( 'Dry Ice - Pizza Burger', $pizza_ice);
$cart->add_fee( 'Shipping Materials - Pizza Burger', $pizza_materials);
}
elseif ( $gravy_in_cart != false ) {
$gravy_ice += $item['quantity'] * 27;
$gravy_materials += $item['quantity'] * 6.99;
$cart->add_fee( 'Dry Ice - Frozen Gravy', $gravy_ice);
$cart->add_fee( 'Shipping Materials - Frozen Gravy', $gravy_materials);
}
elseif ( $pizza_in_cart != false || $gravy_in_cart != false ) {
$pizza_ice += $item['quantity'] * 27;
$pizza_materials += $item['quantity'] * 9.99;
$cart->add_fee( 'Dry Ice - Pizza Burger', $pizza_ice);
$cart->add_fee( 'Shipping Materials - Pizza Burger', $pizza_materials);
$gravy_ice += $item['quantity'] * 27;
$gravy_materials += $item['quantity'] * 6.99;
$cart->add_fee( 'Dry Ice - Frozen Gravy', $gravy_ice);
$cart->add_fee( 'Shipping Materials - Frozen Gravy', $gravy_materials);
}
}
我想做的是:
如果 Pizza Burger 产品在购物车中,则应为每个数量添加干冰费和材料费。
如果冷冻肉汁产品在购物车中,则应为每个数量添加干冰费和材料费。
如果比萨汉堡和冷冻肉汁产品都在购物车中,则应为每个数量添加干冰费和材料费。
我在这里做错了什么?
当此代码段处于活动状态时,它仅适用于 Gravy。更改 Pizza Burgers 的数量对新费用没有影响。