Как исключить товары из определённой категории со страницы «Магазин»

Думаю некоторые из вас, прочитав заголовок, уже подумали – ну вот, ещё один пример хука 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.
  • Мы использовали ярлык категории Велосипеды (velosipedy), чтобы исключить товары из этой категории со страницы «Магазин».
  • Если вы хотите исключить несколько категорий, то можете спокойно указать их ярлыки в массиве через запятую, например array( 'velosipedy', 'moto' ).
  • Также этот пример не ломает уже существующую tax_query, мало ли, вдруг она уже была модифицирована каким-либо плагином.
  • Если хотите исключить не категории, а теги товара, то поменяйте product_cat на product_tag.

Кстати, вы можете прокачать свои знания WooCommerce при помощи моего видеокурса.

Миша

Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.

Пишите, если нужна помощь с сайтом или разработка с нуля.

Комментарии — 3

Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.

Миша Рудрастых и WordPress

Полезности из мира WordPress и жизни студии.

Мой телеграм-канал