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

Думаю некоторые из вас, прочитав заголовок, уже подумали – ну вот, ещё один пример хука 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. Ведь WordPress – это лучший движок для разработки сайтов – как для тех, кто готов использовать заложенную структуру этой CMS, так и для тех, кто предпочитает headless решения.

Сам же я впервые познакомился с WordPress в 2009 году. Организатор WordCamp. Преподаватель в школах Epic Skills и LoftSchool.

Если вам нужна помощь с вашим сайтом или может даже разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда сделаем вам всё на лучшем уровне.

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

Оставить комментарий

Если вы хотите добавить код, не забудьте обернуть его в <pre lang="php"></pre>, если же код – меньше одной строчки, то можно и в <code></code>.