Думаю некоторые из вас, прочитав заголовок, уже подумали – ну вот, ещё один пример хука pre_get_posts. Но нет, здесь мы будем модифицировать цикл товаров WooCommerce несколько другими образом.
Капитаню, но данный код будет иметь смысл, если на странице «Магазин» у вас отображаются товары (это вариант по умолчанию), саму опцию вы можете найти в настройках кастомайзера.
Сами же категории в этом примере мы будем исключать по их ярлыкам:
add_action( 'woocommerce_product_query', 'truemisha_exclude_category', 25 ); function truemisha_exclude_category( $query ) { $tax_query = (array) $query->get( 'tax_query' ); $tax_query[] = array( 'taxonomy' => 'product_cat', 'field' => 'slug', 'terms' => array( 'velosipedy' ), 'operator' => 'NOT IN' ); $query->set( 'tax_query', $tax_query ); }
woocommerce_product_query
практически один в один как pre_get_posts
. array( 'velosipedy', 'moto' )
.product_cat
на product_tag
.Кстати, вы можете прокачать свои знания WooCommerce при помощи моего видеокурса.
Здравствуйте, Миша
Код помог исключить товары со страницы «Магазин», но также он исключил товары с самой категории когда в неё заходишь. Как исключить только со страницы «Магазин», но чтоб товар отображался когда заходишь в саму категорию?
Добрый день,
Могу предложить попробовать внутри функции, в самое начало добавить условие
if( ! is_shop() ) return;
.Спасибо большое, помогло!