Фильтр товаров Woocommerce по ID - PullRequest
0 голосов
/ 25 февраля 2020

Я пытаюсь изменить запрос магазина (архива) Woocommerce. Я искал и нашел много фрагментов, но пока не нашел своего решения. Поэтому я надеюсь, что кто-то здесь может мне помочь.

Я хочу скрыть выбор продуктов, которые определены отдельной функцией. Функция возвращает массив идентификаторов товаров / постов. Я не могу понять, почему это не работает ...

function shop_show_products_by_id( $meta_query, $query ) {
    // Only on shop archive pages
    if( is_admin() || is_search() || ! is_shop() ) return $meta_query;

    $meta_query[] = array(
        'post__not_in' => gives_product_ids_not_to_show()
    );

    return $meta_query;
}
add_filter( 'woocommerce_product_query_meta_query', 'shop_show_products_by_id', 10, 2 );

1 Ответ

0 голосов
/ 26 февраля 2020

post__not_in не является мета-запросом ...

Вы можете исключить подобные продукты, используя woocommerce_product_query, который по существу равен pre_get_posts. Если gives_product_ids_not_to_show() возвращает массив целых чисел, вы можете заменить array () после post__not_in

function shop_hide_products_by_id( $q ) {
    // Only on shop archive pages
    if( is_shop() ){
        $q->set('post__not_in' , array(89,2182)); // use integers
    }
}
add_filter( 'woocommerce_product_query', 'shop_hide_products_by_id' );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...