Здравствуйте.
Во-первых,
>> Помогите, пожалуйста, разобраться, с ночи пробую разные варианты со строкой:
Строками, а не строкой.
Во-вторых, "строка" тут не при чём.
// Запрет на добавление в корзину товаров из категории подписок,
// если уже есть товар из категории подписок в корзине
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
Кажется вы только что публиковали похожий, но удалили (сорри, если это были не вы). Анатолий мне там подсказал решение, гляньте, если что. Может быть полезно.