Мой сайт использует фильтр продуктов YITH для woocommerce. После того, как товары отфильтрованы, мне нужно удалить товары из результатов магазина, если у товара, который соответствует фильтру, нет варианта, соответствующего фильтру на складе.
Я попытался добавить фильтр к 'the_posts 'фильтр, но это только влияет на текущую страницу, которая отображается. Чтобы уточнить, следующий код все равно даст мне 48 результатов (все продукты), но на каждой странице отображаются только первые 5 из 12 продуктов для этой страницы:
function filter_posts ($posts, $query) {
if( is_shop() || is_product_taxonomy() || ! is_search() ) {
$posts = array_slice($posts,0,5);
}
return $posts;
}
add_filter('the_posts', 'filter_posts', 20, 2);
Мне удалось приблизиться к тому, что Я пытаюсь выполнить sh, добавив фильтр к фильтру woocommerce_product_is_visible
. Сделав это, я смог скрыть определенные продукты от результатов. Однако кажется, что это скрывает продукты из результатов поиска вместо удаления продукта. Например:
//This will still show up as 48 results, but each page will simply be blank
add_filter('woocommerce_product_is_visible', 'filter_products', 20, 2);
function filter_products ($visible, $id ) {
return false;
}
Как на самом деле удалить эти продукты из результирующего списка продуктов, которые будут отображаться в WordPress?
Желаемый результат: если продукты не отображаются (как в woocommerce_product_is_visible) они удаляются из запрашиваемых результатов. В этом случае: если имеется всего 48 товаров и 24 из них соответствуют фильтру, но только 15 из этих товаров имеют отклонения с отфильтрованными атрибутами на складе, то в отфильтрованных результатах должно быть 15 товаров и по-прежнему отображается 12 товаров на странице. ,