Вывод товаров WooCommerce по категориям и атрибуттам

Вывод товаров WooCommerce по категориям и атрибутам

платим 200р+ за cpm
Content Protection by DMCA.com

Приведенный ниже код выбирает и отображает на странице товары WooCommerce принадлежащие одновременно к двум или более категориям и исключает все остальные. Так же, в сочетании с категориями, возможно использование атрибутов.

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


<div class="row">
<?php
// Выполнение запроса по категориям и атрибутам
$args = array(
// Использование аргумента tax_query для установки параметров терминов таксономии 
'tax_query' => array(
// Использование нескольких таксономий требует параметр relation
'relation' => 'AND', // значение AND для выборки товаров принадлежащим одновременно ко всем указанным терминам 
// массив для категории имеющей слаг slug-category-1
array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => 'slug-category-1'
),
// массив для категории имеющей слаг slug-category-2
array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => 'slug-category-2'
),
// массив для атрибута pa_attribute-1 имеющим значение attribute-1
array(
'taxonomy' => 'pa_attribute-1',
'field' => 'slug',
'terms' => 'attribute-1'
)
),
// Параметры отображения выведенных товаров
'posts_per_page' => 4, // количество выводимых товаров
'post_type' => 'product', // тип товара
'orderby' => 'title', // сортировка
);
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
global $product;
?>
<!-- Цикл для вывода выбранных товаров -->
<figure class="col-sm-3 product">
<a href="<?php echo get_permalink( $loop->post->ID ) ?>">
<?php woocommerce_show_product_sale_flash( $post, $product ); ?>
<?php
if (has_post_thumbnail( $loop->post->ID )) echo get_the_post_thumbnail($loop->post->ID, 'shop_catalog');
else echo '<img src="'.woocommerce_placeholder_img_src().'" alt="Placeholder" width="250px" height="250px" />';
?>
</a>
<figcaption>
<h3 class="product-title"><?php the_title(); ?></h3>
<div class="product-price"><?php echo $product->get_price_html(); ?></div>
<div class="text-center">
<?php woocommerce_template_loop_add_to_cart( $loop->post, $product ); ?>
</div>
</figcaption>
</figure>
<?php endwhile; ?>
<!-- Сброс данных запроса -->
<?php wp_reset_query(); ?>
</div>

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

Content Protection by DMCA.com

Записи с такими же тегами:

Вывод товаров WooCommerce по категориям и атрибутам: 8 комментариев

  1. Спасибо тебе, добрый человек! Несколько ночей не спала, искала эту инфу

    1. Анатолий, у меня тоже не работало, пока не обратил внимание, что по данному коду должны быть отображены все товары, у которых ОДНОВРЕМЕННО (оператор AND) и product_cat=slug-category-1 и product_cat=slug-category-2 и атрибут pa_attribute-1=pa_attribute-1. То есть, слишком жёсткие условия (товар должен быть сразу в двух категориях, не считая тега). Закомментировал второй массив (slug-category-2) и товары сразу отобразились. Либо убедитесь, что у вас есть товары, у которых проставлены сразу обе категории.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *