Плата за корзину в зависимости от количества товаров в категории товаров в Woocommerce
Вдохновленный этим кодом ответа, в настоящее время мы используем некоторый пользовательский код, который добавляет $2.50
долларовая комиссия, когда количество равно 6
,
Тем не менее, мы хотим добавить $2.50
плата, когда два продукта в одной категории имеют количество 6
,
Это почти работает, но когда есть два продукта в одной категории, и один из них имеет количество 12
затем фрагмент кода вместо сохранения $fee_amout
в $2.50
меняет его на $7.50
,
Таким образом, мы должны найти способ лучше ориентироваться на отдельные продукты и их соответствующее количество или использование или уравнение и -5 из него всякий раз, когда он находит экземпляр продукта, имеющий количество 12.
function custom_pcat_fee( $cart ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
// Set HERE your categories (can be term IDs, slugs or names) in a coma separated array
$categories = array('649');
$fee_amount = 0;
$cat_count = 0;
// Loop through cart items
foreach( $cart->get_cart() as $cart_item ) {
if( has_term( $categories, 'product_cat', $cart_item['product_id']))
$quantity = $cart_item['quantity'];
$cat_count += $cart_item['quantity'];
}
if ($quantity == 6){
$fee_amount = (2.5 * ($cat_count/6));
;}
// Adding the fee
if ( $fee_amount > 0 ){
// Last argument is related to enable tax (true or false)
WC()->cart->add_fee( __( "Find-it Mixed Case", "woocommerce" ), $fee_amount, false );
}
}
1 ответ
обновленный
Если я правильно понял, вы хотите добавить фиксированную плату за корзину, когда в корзине есть 2 товара из определенной категории продуктов, каждый из которых имеет количество, большее или равное 6.
Попробуйте следующий код:
add_action( 'woocommerce_cart_calculate_fees', 'custom_cart_fee', 20, 1 );
function custom_cart_fee( $cart ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
// Set HERE your categories (can be term IDs, slugs or names) in a coma separated array
$categories = array('649');
// Initializing
$count = 0;
// Loop through cart items
foreach( $cart->get_cart() as $cart_item ) {
if( has_term( $categories, 'product_cat', $cart_item['product_id'] ) ) {
if( $cart_item['quantity'] >= 6 ){
$count++;
}
}
}
if ( $count >= 1 ) {
$fee_amount = 2.50 * $count;
$cart->add_fee( __( "Shipping fee", "woocommerce" ), $fee_amount, false );
// Last argument is related to enable tax (true or false)
}
}
Код помещается в файл function.php вашей активной дочерней темы (или активной темы). Проверено и работает.