Друзья просят меня добавить дополнительную плату за корзину в зависимости от веса и только для определенных категорий (или за исключением некоторых категорий, это не имеет значения).
Тема в том, что летом он хочет добавить лед в упаковки, чтобы продукты (например, молоко, сыр и т. Д.) Оставались холодными.
Он также продает гаджеты и экскурсии на свою фабрику и т. Д., Поэтому он не хочет применять дополнительную плату к этой продукции.
На основе «Добавить таможенную плату на основе общего веса в Woocommerce ", моя версия кода, приведенная ниже, применяет дополнительную плату ко всей корзине, исключая продукт посещения из этой платы, потому что вес посещения, очевидно, равен 0.
Но я не разбираюсь в коде и не знаю, как вставить массив, чтобы включить такие категории, как «молоко» и «сыр» (или наоборот, чтобы исключить «посещения» и «гаджеты»).
В зависимости от моего кода, мой код увеличивает плату с шагом 3 кг (из-за калибровки пакетов DHL / UPS / GLS и т. Д.)
/* Extra Fee based on weight */
add_action( 'woocommerce_cart_calculate_fees', 'shipping_weight_fee', 30, 1 );
function shipping_weight_fee( $cart ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
// Convert in grams
$cart_weight = $cart->get_cart_contents_weight() * 1000;
$fee = 0.00; // initial fee
// if cart is > 0 add €1,20 to initial fee by steps of 3000g
if( $cart_weight > 0 ){
for( $i = 0; $i < $cart_weight; $i += 3000 ){
$fee += 1.20;
}
}
// add the fee / doesn't show extra fee if it's 0
if ( !empty( $fee )) {
$cart->add_fee( __( 'Extra for ice' ), $fee, false );
}
}
Последний вопрос: почему переменная $ i может быть 0 ... 1 ... 1000000 без каких-либо изменений в результатах? код работает точно так же ...
Благодарность