Я ищу для создания «кодов приглашений» с использованием смарт-купонов woocommerce. Для этого я хочу, чтобы определенные продукты REQUIRE составляли код купона в корзине/выписке. Я видел способы сделать это, однако они затрагивают все продукты, а не только те, которые я хочу.Просмотр уведомления по обязательным кодам купона со специальными категориями продуктов
Я пытаюсь передать возвращенную переменную другой функции, однако я не могу понять, как это сделать.
Вот последняя версия:
//Check to see if user has product with a specific product category in cart
function check_product_in_cart() {
global $woocommerce;
//assigns a default negative value
// categories targeted 87, 18, 19
$product_in_cart = false;
// start of the loop that fetches the cart items
foreach ($woocommerce->cart->get_cart() as $cart_item_key => $values) {
$_product = $values['data'];
$terms = get_the_terms($_product->id, 'product_cat');
// second level loop search, in case some items have several categories
foreach ($terms as $term) {
$_categoryid = $term->term_id;
if (($_categoryid === 87) || ($_categoryid === 18) || ($_categoryid === 19)) {
//category is in cart!
$product_in_cart = true;
}
}
}
return $product_in_cart;
}
// Force Coupon codes for Woocommerce
add_action('woocommerce_check_cart_items', 'force_coupon_code');
function force_coupon_code($product_in_cart)
{
global $woocommerce;
if(is_cart() || is_checkout()){
$my_coupon = $woocommerce->cart->applied_coupons;
echo $woocommerce->cart->get_applied_coupons;
if(empty($my_coupon))
{
wc_add_notice('<strong>' . $btn['label'] . '</strong> ' . __('A coupon code is mandatory for this product.', 'woocommerce'), 'error');
}
}
}
Первая часть должна возвратить продукт $ product_in_cart и вторая часть заставляет купон. Вот источники кода, который я использую. Mandatory Coupon code и Checking products in cart based on category. Я читал, что размещение переменной внутри новой функции args может привести к этому like so, однако это отнюдь не работает.
Красивая! Работает в обаянии. Я все еще участвую, поэтому, кроме кода MUCH better, строка 'if (empty ($ my_coupon) && $ has_cat)' является тем, что связывает все это вместе. Теоретически, могу ли я добавить больше аргументов в утверждение и далее сузить, например 'if (empty ($ my_coupon) && $ has_cat) && $ color_blue && etc ...'? – jimmyjames