В этом уроке я покажу как скрыть отсутствующие товары со страницы каталога («Магазин»), категорий и меток товара.
Сделать это можно с помощью кода… и с помощью настроек в 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
– предзаказ
Значение данного поля настраивается в настройках товара во вкладке «Запасы»: