WooCommerce получает продукты на основе конкретной таксономии - PullRequest
0 голосов
/ 07 декабря 2018

Мне нужно изменить запрос продукта WooCommerce, потому что я хочу отфильтровать показанные продукты на страницах магазина на основе пользовательской таксономии тега продукта.

Итак, я попробовал вот что, но это не работает:

add_filter( 'woocommerce_product_query_meta_query', 'filter', 10, 2 );
function filter( $meta_query, $query ) {
    // Only on category pages
    if ( ! is_product_category() ) {
        return $meta_query;
    }

    $meta_query[] = array(
        'key'     => 'taxonomy',
        'value'   => 'product_tag',
        'compare' => 'EXIST'
    );

    return $meta_query;
}

Поэтому я просто хочу показать все продукты, в которых есть таксономия ABCSD.Код находится в моем functions.php.Что я здесь не так делаю?

Примечание:

Я имею в виду значения, которые я получаю, когда вызываю эту функцию:

wp_get_post_terms( $product_id, 'product_tag' );

1 Ответ

0 голосов
/ 07 декабря 2018

Поскольку речь идет о таксономии, вам нужно использовать налоговый запрос, и тогда ловушка будет другой.Также вы можете сделать это для определенных тегов товара:

add_filter( 'woocommerce_product_query_tax_query', 'filter_products_with_specific_product_tags', 10, 2 );
function filter_products_with_specific_product_tags( $tax_query, $query ) {
    // Only on category pages
    if ( ! is_product_category() ) 
        return $tax_query;

    $tax_query[] = array(
        'taxonomy' => 'product_tag',
        'field' => 'name',
        'terms' => array('Green', 'Yellow', 'Red'), // Defined product tags term names
    );
    return $tax_query;
};

Код находится в файле function.php вашей активной дочерней темы (или активной темы).Должно работать.

...