Intereting Posts
Второй цикл WP_Query показывает данные из основного запроса Объединение обновленного сайта-разработчика с живым сайтом при правильном выполнении заказов if is $ current_user-> role admin, а затем скрыть пользователя определенной роли из списка пользователей Копирование темы из Localhost to Live не копирует все настройки темы с ней? Недостаток использования фильтров и крючков несколько раз Где скопировать файлы woocommerce в мою собственную тему, чтобы избежать редактирования основного плагина? Время ожидания wp_set_object_terms? Получить собственный URL-адрес архива post_type Стандартная проблема с кодировкой администратора Динамически добавлять / дублировать пользовательскую мета в пользовательских типах сообщений Как создать уведомление по интерфейсу с использованием heartbeat api для нескольких пользовательских типов сообщений Нужно ли удалять версию подключаемого модуля, если вы просто обновляете атрибут «Проверено до»? Номера галереи изображений для 3,5 Исключить имя категории, используя имя cat Как изменить текст ссылки «Главная» в bbPress форуме breadcrumb?

Как проверить, находится ли продукт в определенной категории на single-product.php в Woocommerce?

Как в мире можно проверить, находится ли продукт в определенной категории продукта на single-product.php ?

<?php if (is_product_category('audio')) { echo 'In audio'; woocommerce_get_template_part( 'content', 'single-product' ); } elseif (is_product_category('elektro')) { echo 'In elektro'; woocommerce_get_template_part( 'content', 'single-product' ); } else { echo 'some blabla'; } ?> 

is_product_category ('slug') не влияет на single-product.php . Я хочу иметь верхние условные обозначения. Любое решение для этого на странице одного продукта?

Solutions Collecting From Web of "Как проверить, находится ли продукт в определенной категории на single-product.php в Woocommerce?"

Я не думаю, что get_categories() – лучший вариант для вас в этом случае, потому что он возвращает строку со всеми категориями, указанными в качестве якорных тегов, отлично подходит для отображения, но не очень подходит для определения кода, каковы категории. Итак, первое, что вам нужно сделать, это захватить объект product / post для текущей страницы, если у вас его еще нет:

 global $post; 

Затем вы можете получить объекты терминов категории продукта (категории) для продукта. Здесь я превращаю объекты терминов категории в простой массив с именем $categories поэтому легче видеть, какие пули назначены. Обратите внимание, что это вернет все категории, присвоенные продукту, а не только одну из текущей страницы, то есть, если мы /shop/audio/funzo/ :

 $terms = wp_get_post_terms( $post->ID, 'product_cat' ); foreach ( $terms as $term ) $categories[] = $term->slug; 

Тогда нам просто нужно проверить, есть ли категория в списке:

 if ( in_array( 'audio', $categories ) ) { // do something 

Объединяя все это:

 <?php global $post; $terms = wp_get_post_terms( $post->ID, 'product_cat' ); foreach ( $terms as $term ) $categories[] = $term->slug; if ( in_array( 'audio', $categories ) ) { echo 'In audio'; woocommerce_get_template_part( 'content', 'single-product' ); } elseif ( in_array( 'elektro', $categories ) ) { echo 'In elektro'; woocommerce_get_template_part( 'content', 'single-product' ); } else { echo 'some blabla'; } 

Надеюсь, это то, что вы искали, и отвечает на ваш вопрос.

has_term должен работать в этом случае:

 if ( has_term( 'audio', 'product_cat' ) ) { echo 'In audio'; woocommerce_get_template_part( 'content', 'single-product' ); } elseif ( has_term( 'elektro', 'product_cat' ) ) { echo 'In elektro'; woocommerce_get_template_part( 'content', 'single-product' ); } else { echo 'some blabla'; } 

Стоит отметить, что вы можете просмотреть список опций, вызвав массив, вместо того, чтобы загромождать ваш код множеством проверок elseif, предполагая, что вы хотите сделать то же самое с каждой категорией.

 if( has_term( array( 'laptop', 'fridge', 'hats', 'magic wand' ), 'product_cat' ) ) : // Do stuff here else : // Do some other stuff endif; 

Это старый, но на всякий случай люди все еще ищут WooThemes в качестве простого решения:

 if ( is_product() && has_term( 'your_category', 'product_cat' ) ) { //do code } 

* Измените 'your_category' на то, что вы используете.

Вот ссылка на документацию: https://docs.woothemes.com/document/remov-product-content-based-on-category/

Я бы посмотрел на использование функции get_categories() класса WC_Product.

Здесь вы можете найти ссылку на документацию.

В основном в цикле страницы вызывается функция возврата категорий, связанных с продуктом.