Как скрыть товары дочерних категорий на странице родительской категории в WooCommerce
По умолчанию на странице категории выводятся товары как самой категории, так и товары всех её дочерних категорий. Исключим вывод товаров вложенных категорий.
На этом скриншоте показана страница категории «тест», которая содержит подкатегорию — «вложенный тест». Сейчас на странице одновременно выводятся товары из обеих категорий.
Чтобы скрыть товар вложенной категории, нам необходимо изменить запрос страницы категории «тест». Для этого воспользуемся хуком pre_get_posts и классом WP_Query.
Применим следующий сниппет:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
function exclude_products_from_child_cats( $wp_query ) { if ( ! is_admin() && $wp_query->is_main_query()) { if (isset( $wp_query->query_vars['product_cat'] )) { $tax_query = array( array( 'taxonomy' => 'product_cat', 'field' => 'slug', 'terms' => $wp_query->query_vars['product_cat'], 'include_children' => false ) ); $wp_query->set( 'tax_query', $tax_query ); } } } add_filter( 'pre_get_posts', 'exclude_products_from_child_cats' ); |
Теперь будут выводится относящиеся только к отображаемой категории, без учета вложенных.
а куда надо вставить этот кусок кода?
functions.php вашей темы
а как отнять счетчик количества товаров возле категорий?
Здравствуйте! Добавил данный код (только код, на случай если ещё нужно было подключать какие-либо скрипты или файлы), но товары из дочерних категорий так и продолжают выводиться. Товар относится только к дочерней категории, больше ни какая не указана, но всё равно выводится в основной категории с перечнем всех товаров