Думаю некоторые из вас, прочитав заголовок, уже подумали – ну вот, ещё один пример хука 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;
.Спасибо большое, помогло!