Фильтрация продуктов по пользовательскому атрибуту продукта и публикация метаданных в WP_Query - PullRequest
0 голосов
/ 02 января 2019

Я уже отфильтровал по категории, но не знаю, как фильтровать товары по пользовательским атрибутам или мета значениям

код:

$key="naam"; //custom attribute name
$value="test";// custom value
$query_custom = array('key' => $key, 'value' => $value);
$meta_query[] = $query_custom ;

$args=array('meta_query'=>$meta_query, 'product_cat' => 'activiteiten','posts_per_page' => 10,'post_type' => 'product');



$loop = new WP_Query( $args );

`

See image for custom attributes

Ответы [ 2 ]

0 голосов
/ 02 января 2019

Вот рабочий пример запроса, включающего:

  • фильтрация по категориям товаров
  • фильтрация мета-значений после (мета-запрос)
  • фильтрация значений атрибутов продукта (налоговый запрос)

Код:

$products = new WP_Query( array(
    'posts_per_page' => 10,
    'post_type'   => 'product',
    'post_status' => 'publish',

    // 1. Product category filter
    'product_cat' => 'clothing',

    // 2. The Post meta query part (filtering by post meta value)
    'meta_query' => array( array(
         'key'     => '_price',
         'value'   => 5,
         'type'    => 'numeric',
         'compare' => '>',
    ), ),

    // 3. The taxonomy meta query part (filtering by term values)
    'tax_query' => array( array(
        'taxonomy' => 'pa_color', // Product attribute taxonomy: always start with 'pa_'
        'field'    => 'slug', // Can be 'term_id', 'slug' or 'name'
        'terms'    => array('blue'),
    ), ),
) );

// Testing output
if( $products->have_posts() ) : 
echo '<ul>'
while ( $products->have_posts() ) : $products->the_post();
echo '<li class="post-id-' . get_the_id() . '">' . get_the_title() . '</li>';
endwhile;
wp_reset_postdata();
echo '</ul>'
endif;

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

Официальная справочная документация для Wordpress WP_Query:

0 голосов
/ 02 января 2019

Вы можете достичь, используя следующий код.

            $args = array(
              'meta_query'=> array(
                array(
                  'key' => 'vote', // here use your field name
                  'compare' => '=', // comparison sign
                  'value' => 5, // value using that you can search

                )
              ),
              'product_cat' => 'activiteiten',
              'posts_per_page' => 10,
              'post_type' => 'product'
            ) );

            query_posts( $args ); // get all the posts data using above filter.

query_posts используется, чтобы найти сообщения со списком аргументов meta_query используется в вашем случае, чтобы найти соответствующие данные настраиваемого поля.

...