Ответы пользователя по тегу WooСommerce
  • Как указать в php-скрипте исключение для категории?

    @abezgauz
    web-кузнец
    Здравствуйте.

    Во-первых,
    >> Помогите, пожалуйста, разобраться, с ночи пробую разные варианты со строкой:
    Строками, а не строкой.

    Во-вторых, "строка" тут не при чём.
    // Запрет на добавление в корзину товаров из категории подписок,
    // если уже есть товар из категории подписок в корзине
    add_filter('woocommerce_add_to_cart_validation', 'for_subscriptions_limit_cart_items', 10, 3);
    
    function for_subscriptions_limit_cart_items ($passed, $product_id, $quantity) {
    
    	$subscription_category = 'subscriptions';
    	// Если корзина пуста
    	if ( WC()->cart->is_empty() ) {
    		return $passed;
    	}
    
    	$subscription_in_cart = false;
    
    	// Поиск товаров из категории подписок в корзине
    	foreach (WC()->cart->get_cart() as $cart_item) {
    		if ( has_term($subscription_category, 'product_cat', $cart_item['product_id']) ) {
    			$subscription_in_cart = true;
    		}
    	}
    
    	if ($subscription_in_cart) {
    		// проверяем, что новый товар тоже из категории подписок
    		if ( has_term($subscription_category, 'product_cat', $product_id) ) {
    			// добавляем товар в корзину
    			return $passed;
    
    		// если новый товар не из категории подписок
    	} else {
    		// Показать сообщение
    		wc_add_notice(__('A subscription is already in cart (Other items are not allowed in cart).', 'woocommerce' ), 'error');
    		// Не добавляем новые товары
    		return false;
    		}
    	}
    	return $passed;
    }


    И третье :) Если не ошибаюсь, я продолжил мысль своего старого вопроса: https://qna.habr.com/q/917125

    Кажется вы только что публиковали похожий, но удалили (сорри, если это были не вы). Анатолий мне там подсказал решение, гляньте, если что. Может быть полезно.
    Ответ написан
    3 комментария