Как скрыть товары дочерних категорий на странице родительской категории в WooCommerce
По умолчанию на странице категории выводятся товары как самой категории, так и товары всех её дочерних категорий. Исключим вывод товаров вложенных категорий.
На этом скриншоте показана страница категории «тест», которая содержит подкатегорию — «вложенный тест». Сейчас на странице одновременно выводятся товары из обеих категорий.

Чтобы скрыть товар вложенной категории, нам необходимо изменить запрос страницы категории «тест». Для этого воспользуемся хуком pre_get_posts и классом WP_Query.
Применим следующий сниппет:
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' );Теперь будут выводится относящиеся только к отображаемой категории, без учета вложенных.



















