Исключить определенный товар Woocommerce из общего правила, как это сделать?

Для исключения определенного товара Woocommerce из общего правила вам потребуется использовать фильтры или хуки в файле functions.php вашей темы.

Во-первых, вам нужно определить, какой товар вы хотели бы исключить. Вы можете использовать идентификатор товара (ID), название или любой другой уникальный идентификатор.

Затем вам нужно добавить функцию в файл functions.php, которая будет проверять, применимо ли правило к текущему товару.

Ниже приведен пример кода для исключения товара по его ID:

function exclude_specific_product_from_rule($is_match, $item, $rule) {
    // ID товара, который нужно исключить
    $excluded_product_ids = array(123, 456, 789);
    
    // Проверяем, является ли текущий товар исключаемым
    if (isset($item['product_id']) && in_array($item['product_id'], $excluded_product_ids)) {
        return false; // Возвращаем false, чтобы исключить товар из применения правила
    }
    
    return $is_match; // Возвращаем исходное значение, если товар не является исключаемым
}
add_filter('woocommerce_coupon_get_discount_totals', 'exclude_specific_product_from_rule', 10, 3);

В этом примере функция exclude_specific_product_from_rule принимает три параметра: $is_match, $item и $rule. Параметр $is_match указывает, применяется ли правило к текущему товару или нет. Параметр $item содержит информацию о текущем товаре, включая его ID ($item['product_id']). Параметр $rule содержит информацию о текущем правиле.

Внутри функции мы создали массив $excluded_product_ids, в который мы добавили ID товаров, которые хотим исключить из правила. Затем мы проверяем, является ли ID текущего товара одним из исключаемых. Если это так, мы возвращаем false, чтобы исключить товар из применения правила. Если это не так, мы возвращаем исходное значение $is_match, чтобы сохранить исходное поведение правила.

Наиболее важной частью этого кода является использование фильтра woocommerce_coupon_get_discount_totals. Это фильтр, который позволяет изменять общую сумму скидки для корзины на основе правил купона. Внутри функции exclude_specific_product_from_rule мы добавляем фильтр с приоритетом 10 и указываем, что мы хотим передать 3 аргумента.

После добавления этого кода в файл functions.php и сохранения изменений, указанный товар будет исключен из применения общих правил Woocommerce для купонов или скидок.

Обратите внимание, что этот пример предназначен только для демонстрации и может потребоваться дополнительная настройка в зависимости от ваших потребностей и спецификаций магазина. Рекомендуется резервное копирование файлов перед внесением изменений и тестирование на тестовом сайте перед применением на рабочем сайте.