Удаление продуктов из результатов запроса WordPress / WooCommerce - PullRequest
0 голосов
/ 20 января 2020

Мой сайт использует фильтр продуктов 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 товаров на странице. ,

...