Как скрыть товары дочерних категорий на странице родительской категории в 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' );
Теперь будут выводится относящиеся только к отображаемой категории, без учета вложенных.