Как добавить кастомный стиль для определенной категории товаров woocommerce?

Ссылка скопирована
CSS
1 ответ

Я попробовал использовать данное решение:

function ale_hide_custom_style_in_category() {     // Проверяем, является ли текущая страница страницей товара     if (is_product()) {         global $post;         // Получаем категории товара         $product_categories = wp_get_post_terms($post->ID, 'product_cat', array('fields' => 'slugs'));         // Здесь укажите название вашей категории, для которой не нужно применять стиль         $excluded_category = 'название-категории';         // Проверяем, принадлежит ли товар указанной категории         if (in_array($excluded_category, $product_categories)) {             // Если товар принадлежит категории, не выводим стиль             echo '<style type="text/css">';             echo "             .pay-method-ind.recommended:before {                 visibility:hidden;             }             ";             echo '</style>';         }     } }  add_action('wp_head', 'ale_hide_custom_style_in_category');

function ale_hide_custom_style_in_category() { // Проверяем, является ли текущая страница страницей товара if (is_product()) { global $post; // Получаем категории товара $product_categories = wp_get_post_terms($post->ID, 'product_cat', array('fields' => 'slugs')); // Здесь укажите название вашей категории, для которой не нужно применять стиль $excluded_category = 'название-категории'; // Проверяем, принадлежит ли товар указанной категории if (in_array($excluded_category, $product_categories)) { // Если товар принадлежит категории, не выводим стиль echo '<style type="text/css">'; echo " .pay-method-ind.recommended:before { visibility:hidden; } "; echo '</style>'; } } } add_action('wp_head', 'ale_hide_custom_style_in_category');

В каком месте может быть ошибка?

Дополнительные вопросы

Вам для товара в определённой категории?
Или всё таки для определённой категории товара?

Представленный код, если что-то и делает, то делает для первого вопроса, а у вас в в заголовке задан второй....

  • Павел, для определенной категории товара
  • Ответы на вопрос 0

    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Андрей PHP Ответ

    Кастомный стиль для товаров определённой категории в WooCommerce проще всего добавить через CSS-класс на body или на карточку товара, а не подключать/отключать отдельный CSS-файл для каждого товара. WordPress и WooCommerce уже добавляют полезные классы, но иногда удобнее добавить свой.

    Для страницы одного товара:

    add_filter('body_class', function ($classes) {
        if (is_product()) {
            global $post;
            if (has_term('nazvanie-kategorii', 'product_cat', $post)) {
                $classes[] = 'product-cat-special';
            }
        }
        return $classes;
    });

    add_filter('body_class', function ($classes) { if (is_product()) { global $post; if (has_term('nazvanie-kategorii', 'product_cat', $post)) { $classes[] = 'product-cat-special'; } } return $classes; });

    После этого в CSS:

    body.product-cat-special .summary {
        background: #f5f8ff;
    }
     
    body.product-cat-special .single_add_to_cart_button {
        border-radius: 8px;
    }

    body.product-cat-special .summary { background: #f5f8ff; } body.product-cat-special .single_add_to_cart_button { border-radius: 8px; }

    Для карточек товаров в каталоге можно добавить класс к элементу товара:

    add_filter('woocommerce_post_class', function ($classes, $product) {
        if ($product && has_term('nazvanie-kategorii', 'product_cat', $product->get_id())) {
            $classes[] = 'product-card-special';
        }
        return $classes;
    }, 10, 2);

    add_filter('woocommerce_post_class', function ($classes, $product) { if ($product && has_term('nazvanie-kategorii', 'product_cat', $product->get_id())) { $classes[] = 'product-card-special'; } return $classes; }, 10, 2);

    И CSS:

    .product-card-special {
        border: 1px solid #2f6bff;
    }

    .product-card-special { border: 1px solid #2f6bff; }

    Если нужно именно подключить отдельный CSS-файл только для категории, можно использовать wp_enqueue_scripts, но чаще это лишнее. Один общий CSS с условным классом проще поддерживать и меньше ломается.

    Проверьте slug категории: в код нужно писать не название на русском, а ярлык категории, например akcii или special. Если товар может быть в дочерней категории, а стиль должен применяться и к родителю, понадобится проверка с учётом иерархии.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно