Я пытаюсь автоматически применять купоны в своем магазине WooCommerce на основе идентификационных номеров и количества товаров. Моя конечная цель заключается в том, что конкретный купон будет автоматически применяться, если в корзину будут добавлены два (2) желаемых продуктов, а для другого купона на приложение y автоматически, когда в корзину будут добавлены ТРЕХ (3) желаемых продуктов. Единственное количество продукта не должно иметь никакой скидки. Ниже приводится исправленный вариант кода, который теперь работает:Условно примените купоны для определенных идентификаторов продуктов и их количества
add_action('woocommerce_before_cart', 'conditional_auto_add_coupons');
function conditional_auto_add_coupons() {
if (!WC()->cart->is_empty()){
// Define HERE your Targeted Product ID and coupons codes
$target_pid = 103;
$coupon1 = 'soccer-sibling-2';
$coupon2 = 'soccer-sibling-3';
// First cart loop: Counting number of subactegory items in cart
foreach (WC()->cart->get_cart() as $cart_item){
if($target_pid == $cart_item['data']->id){
// Removes any coupons in the cart already
WC()->cart->remove_coupons();
if(2 == WC()->cart->get_cart_contents_count() && !WC()->cart->has_discount($coupon1)){
WC()->cart->remove_coupons();
WC()->cart->add_discount($coupon1);
wc_add_notice(__('The multiple sibling discount has been applied.', 'theme_domain'), 'success');
} elseif(3 == WC()->cart->get_cart_contents_count() && !WC()->cart->has_discount($coupon2)){
WC()->cart->remove_coupons();
WC()->cart->add_discount($coupon2);
wc_add_notice(__('The multiple sibling discount has been applied.', 'theme_domain'), 'success');
}
// Recalculates Cart Totals to show correct price
WC()->cart->calculate_totals();
}
}
}
}
Какое сообщение об ошибке вы получаете? –
Ну, я заметил, что в моем вставленном коде была синтаксическая ошибка. Исправлено это. Ошибка, которую я получаю, когда я отлаживаю «Замечание: попытка получить свойство не-объекта в /home/...functions.php в строке 333». Соответствующая строка является условной 'if ($ _product-> id == $ product_id)' – GDailey