WooCommerce: скрываем товары, которых нет в наличии

В этом уроке я покажу как скрыть отсутствующие товары со страницы каталога («Магазин»), категорий и меток товара.

Сделать это можно с помощью кода… и с помощью настроек в WooCommerce \"😉\"

Перейдите в админ-панели в настройки WooCommerce, вкладка «Товары». Затем переключитесь на «Запасы» и поставьте галочку у «Видимость закончившихся товаров».

\"\"

В принципе, после этого код вам не понадобится.

Но если вдруг вы как-то по другому захотите настроить видимость, вот вам код:

add_filter(\'pre_get_posts\', \'myshop_show_in_stock\', 25);
 
function myshop_show_in_stock($query) {
 
	if(
		!is_admin()
		&& $query->is_main_query()
		&& (is_shop() || is_product_category() || is_product_tag())
	) {
 
	$query->set( 
		\'meta_query\', 
		array( 
			array(
			\'key\' => \'_stock_status\',
			\'value\' => \'outofstock\',
			\'compare\' => \'NOT IN\'
			)
		)
	);
 
	}
 
}

Где:

  • is_shop() – условный тег, проверяет, находимся ли на странице «Магазин»
  • is_product_category() – проверяет, отображается ли страница категории товаров
  • is_product_tag() – позволяет проверить нахождение на страницах меток товаров
  • pre_get_posts – хук-событие, используется для изменения запроса.

Также в коде используется мета-поле _stock_status, которое может иметь три статуса:

  • instock – в наличии
  • outofstock – нет в наличии
  • onbackorder – предзаказ

Значение данного поля настраивается в настройках товара во вкладке «Запасы»:

\"\"

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Давайте обсудим ваш проект

Оставьте заявку или свяжитесь со мной напрямую по контактам ниже