WP_Query: Как исключить из цикла скрытые товары в WooCommerce

Когда я создавал бесконечную загрузку товаров при скролле на главной странице каталога, я заметил, что последовательность товаров нарушена. Как выяснилось, причина была в том, что некоторые товары были скрыты от отображения в каталоге.

Эта настройка находится в метабоксе «Опубликовать».

WooCommerce скрыть товар от отображения в каталоге

Как же учитывать, что товар скрыт или отображается при создании дополнительных циклов при помощи WP_Query например?

До версии WooCommerce 3.0 эта настройках сохранялась в метаданных товара с ключом _visibility, теперь же это – таксономия, а значит управляется она при помощи параметра tax_query.

$args = array(
	'post_type' => 'product',
	'tax_query' => array(
   		array(
			'taxonomy' => 'product_visibility',
			'field'    => 'name',
			'terms'    => 'exclude-from-catalog',
			'operator' => 'NOT IN',
		),
	),
);
 
$q = new WP_Query( $args );

Другие возможные опции таксономии product_visibility это кстати exclude-from-search, featured, outofstock.

Миша

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

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

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

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