2015-06-02 2 views
1

Я искал много блогов и форумов, но пока это еще не ответили. Поэтому я пытаюсь найти способ фильтрации продукта по атрибуту. Я использую ajax, чтобы вытащить данные и добавить его. Вопрос в том, какой будет запрос, чтобы цикл зависел от того, какой атрибут.Woocommerce Filter Продукт по Attribute

Пример.
Продукт A имеет цвет: синий, красный, зеленый и имеет бренд: BrandA, BrandB
Продукт B имеет цвет: розовый, красный, черный.

Все, что я хочу, это получить весь продукт с атрибутом цвета [красный и зеленый] и бренд [BrandA] в одном запросе без использования какого-либо плагина. Вот мой код в моем functions.php

function advanced_search(){ 

    $html = ""; 
    $args = array('post_type' => 'product','product_cat' => 'yarn'); 
    $loop = new WP_Query($args); 
    while ($loop->have_posts()){ 
     $loop->the_post(); 
     ob_start(); 
     get_template_part('templates/part', 'search-result'); 
     $html = ob_get_contents(); 
     ob_end_clean(); 
    } 
    wp_send_json(array( "product_id" => $product_id , "html" => $html)); 
} 
add_action('wp_ajax_get_advanced_search', 'advanced_search'); 
add_action('wp_ajax_nopriv_get_advanced_search', 'advanced_search'); 

Я не знаю, где я должен поставить атрибуты продукта в моем запросе. Надеюсь, кто-нибудь нашел ответ на это. Большое вам спасибо.

ответ

4

Вы должны быть в состоянии добиться того, что хотите, используя tax_query в сочетании с вашим WP_Query. Приложен небольшой пример с использованием атрибута «Бренд» и «EVGA» внутри него (который WooCommerce превратится в бренд атрибута «pa_brand»).

$query = new WP_Query(array(
    'tax_query' => array(
     'relation'=>'AND', 
     array(
      'taxonomy' => 'pa_brand', 
      'field' => 'slug', 
      'terms' => 'evga' 
     ) 
    ) 
)); 

Вы можете найти дополнительную документацию по приведенным выше ссылкам для объединения нескольких налоговых запросов для дополнительной фильтрации и функциональности.

+0

Это замечательно !. теперь работает. Я ставлю свои термины в терминах. Какую ценность я должен поставить в поле? Он работает сейчас, не меняя его со значения «slug». Простите, я не могу проголосовать за вас. у меня нет достаточной репутации. Спасибо, кстати. :) –