Как добавить кастомный стиль для определенной категории товаров woocommerce?
Я попробовал использовать данное решение:
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
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Кастомный стиль для товаров определённой категории в 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; });
После этого в CSS:
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);
И CSS:
.product-card-special { border: 1px solid #2f6bff; }
Если нужно именно подключить отдельный CSS-файл только для категории, можно использовать
wp_enqueue_scripts, но чаще это лишнее. Один общий CSS с условным классом проще поддерживать и меньше ломается.Проверьте slug категории: в код нужно писать не название на русском, а ярлык категории, например
akciiилиspecial. Если товар может быть в дочерней категории, а стиль должен применяться и к родителю, понадобится проверка с учётом иерархии.