1. Главная
  2. /
  3. CMS
  4. /
  5. WordPress
  6. /
  7. WooCommerce
  8. /
  9. Как получить товары по категориям и атрибутам — WooCommerce

Как получить товары по категориям и атрибутам — WooCommerce

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

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

Первоисточник -> Вывод товаров 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>

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

VPN

за 2 евро

10% за 3 месяца оплаты

10% скидка по ссылке https://fornex.com/code/i-notes_VPN_10/

1 комментарий. Оставить новый

  • Лилия
    02.09.2022 09:05

    Доброго времени суток. Очень полезная статья. Но у меня еще появился вопрос. Подскажите, как можно реализовать внутри карточки товара некую сортировку товаров по коллекции, к которой относится данный товар. Например, есть цвета 3 штуки, нажимая на один из них, снизу должны отображаться товары этой же коллекции выбранного цвета. И это всё прям в карточке товара, чтобы покупателям не надо было заново выходить из товара и искать остальные товары этой же коллекции. Может сталкивались с таким? Опыта в php не так много, буду очень благодарна за подсказку или примерный код.

    Ответить

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

Ваш адрес email не будет опубликован.

Заполните поле
Заполните поле
Пожалуйста, введите корректный адрес email.
Вы должны согласиться с условиями для продолжения

Рубрики

Меню