Фильтровать страницы архива Woocommerce значениями атрибутов продукта по умолчанию

Я хочу, чтобы на страницах архива товаров отображались товары, соответствующие определенному значению атрибута по умолчанию.

Пример
Атрибут: pa_condition
Термины: новый, использованный, закрытие

Открывая магазин, я бы хотел видеть только новинки.

Но есть 2 языка. Итак, я думаю, условие должно применяться к идентификатору атрибута.

Как это можно сделать?


person Gaël    schedule 08.11.2017    source источник
comment
Что вы пробовали, какой у вас код? Из того, что вы написали, не ясно, в чем может быть проблема.   -  person Flummox - don't be evil SE    schedule 08.11.2017


Ответы (1)


Обновлено: вы можете попробовать эту подключенную функцию:

add_filter( 'woocommerce_product_query_tax_query', 'custom_product_query_tax_query', 10, 2 );
function custom_product_query_tax_query( $tax_query, $query ) {
    if( is_admin() ) return $tax_query;

    // Define HERE the product attribute and the terms
    $taxonomy = 'pa_condition';
    $terms = array( 'New', 'Used', 'Closeout' ); // Term names

    // Add your criteria
    $tax_query[] = array(
        'taxonomy' => $taxonomy,
        'field'    => 'name', // Or 'slug' or 'term_id'
        'terms'    => $terms,
    );
    return $tax_query;
}

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

Проверено и работает.

Но я не уверен в переводе терминов, поэтому вы должны будете добавить их во второй массив $tax_query[] в запрос для этих переведенных терминов ...


Официальная ссылка: WP_Query ~ Параметры таксономии

person LoicTheAztec    schedule 08.11.2017
comment
Он не возвращает продукт, соответствующий выбранным критериям. Я только что удалил Define HERE атрибут продукта и условия. Я не уверен, нужно ли мне оставлять все термины в массиве или просто «Новые». Я не уверен, нужно ли мне заменять «имена» в «поле» = › - person Gaël; 09.11.2017
comment
Я сохраняю 'field' = ›'names', именно так? или заменить имена на Новые? - person Gaël; 09.11.2017
comment
windspirit.gbwebmedia.com/onlinestore/windsurf/windsurf-boards: Нет найдены продукты, соответствующие вашему запросу. - person Gaël; 09.11.2017
comment
что я изменил в вашем коде: $ terms = array ('new', 'used', 'distributionors'); // Названия терминов и 'field' = ›'new', - person Gaël; 09.11.2017
comment
Извините, @ Gaël ... Я протестировал, внес небольшие изменения ... Теперь все работает, как ожидалось. Попытайся. Спасибо - person LoicTheAztec; 09.11.2017