@agletd

Как получить товары с заданным атрибутом woocommerce?

Привет! Допиливаю фильтр товаров по атрибутам. После выбора первого атрибута в форме, нужно получить список товаров с этим атрибутом. Но запрос выдает пустой результат, когда добавляю tax_query. Код находится в functions.php

$newquery = new WP_Query( array(
        'post_type'             => 'product',
           'posts_per_page'        => '22',
           'post_status' => 'publish',
           'tax_query' => array( array(
               'taxonomy' => 'pa_chrisi', // Product attribute taxonomy: always start with 'pa_'
               'field'    => 'term_id', // Can be 'term_id', 'slug' or 'name'
               'terms'    => 170,
           ), ),
    
    ) );


Я проверял БД по таксономии pa_chrisi. Я пробовал
- сделать init woocommerce (правда не совсем понял зачем) перед моим кодом.
- добавлял в запрос 'suppress_filters' => true, и 'include_children' => false,

echo $newquery->request; выводит:
SELECT SQL_CALC_FOUND_ROWS dmg0j_posts.ID FROM dmg0j_posts WHERE 1=1 AND ( 0 = 1 ) AND dmg0j_posts.post_type = 'product' AND ((dmg0j_posts.post_status = 'publish')) GROUP BY dmg0j_posts.ID ORDER BY dmg0j_posts.post_date DESC LIMIT 0, 22


Если удалить tax_query то все работает, выводятся все продукты.
Может как-то обойти проблему? В целом логика: в форме 3 select-a выбираем первый атрибут - во втором выводим только те варианты атрибута, которые есть у товаров содержащих 1ый атрибут. Если эту проверку не проводить а давать выбрать во всех трех select-ах любой атрибут то в 90% случаев поиск ничего не даст и человек уйдет.

Помогите коллеги! Первый раз пишу)) Обычно гуглю все сам. Голову сломал, спать не могу, есть не могу!
  • Вопрос задан
  • 176 просмотров
Пригласить эксперта
Ответы на вопрос 1
@agletd Автор вопроса
Сам нашел ответ.
Если юзаете WP_Query с tax_query в functions.php поместите свой код в add_action с низким приоритетом:
add_action( 'init', 'maratgenius', 999 );
function maratgenius()
{
            $newquery = new WP_Query( array(
                'post_type'             => 'product',
                   'posts_per_page'        => '-1',
                   'post_status' => 'publish',
                   'tax_query' => array( array(
                       'taxonomy' => 'pa_chrisi', // Product attribute taxonomy: always start with 'pa_'
                       'field'    => 'term_id', // Can be 'term_id', 'slug' or 'name'
                       'terms'    => $_POST['get_what'],
                   ), ),
            
            ) );
//other code
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы