@Dvorakovski

Как вывести список товаров в WooCommerce атрибуту?

На сайт импортированы товары из 1С. При импорте автоматически создались атрибуты. Необходимо вывести список товаров по этому кастомному атрибуту. Названия атрибутов, на русском, пытался менять на английский - не помогает. Мучался с шорткодом [product_attribute attribute="attr_name" filter="value"] - решения не нашёл. Хотя бы покажите в какую сторону смотреть и искать. Варианты с платными плагинами не предлагать.

Вот как я пытался делать

$attribute = 'типоразмер';
						$values    = '215/40 R17';
						$per_page  = '12';
						$columns   = '3';
						$orderby   = 'title';
						$order     = 'desc';
	
						// Default ordering args
						$ordering_args = $woocommerce->query->get_catalog_ordering_args( $orderby, $order );
	
						// Define Query Arguments
						$args = array( 
							'post_type'				=> 'product',
							'post_status' 			=> 'publish',
							'ignore_sticky_posts'	=> 1,
							'orderby' 				=> $orderby,
							'order' 				=> $order,
							'posts_per_page' 		=> $per_page,
							'meta_query' 			=> array(
								array(
									'key' 			=> '_visibility',
									'value' 		=> array('catalog', 'visible'),
									'compare' 		=> 'IN'
								)
							),
							'tax_query' 			=> array(
								array(
									'taxonomy' 		=> $attribute,
									'terms' 		=> explode(",",$values),
									'field' 		=> 'slug',
									'operator' 		=> '='
								)
							)
						);
						$products = new WP_Query( $args );
						print_r($products);
						if ( $products->have_posts() ) {
							echo '<ul>';
							while ( $products->have_posts() ) {
								$products->the_post();
								echo '<li>' . get_the_title() . '</li>';
							}
							echo '</ul>';
						} else {
							// no posts found
						}


и вот такой вариант пробовал
echo do_shortcode("[product_attribute attribute='Типоразмер' filter='215/40 R17']");
  • Вопрос задан
  • 4523 просмотра
Решения вопроса 1
@Dvorakovski Автор вопроса
Вот решение, суть в том, что я наплевал на название атрибута и искал непосредственно по значению
$args = array ( 
							'post_type'  => 'product',
							'posts_per_page'  => -1,
							'meta_query' => array( 
								array( 
									'value' => $_GET['type'], 
									'compare' => 'like'
								), 
							), 
						);
						global $woocommerce, $woocommerce_loop;
						$products = new WP_Query( $args );
						if ( $products->have_posts() ) { ?>

		<?php woocommerce_product_loop_start(); ?>

			<?php while ( $products->have_posts() ) : $products->the_post(); ?>

				<?php woocommerce_get_template_part( 'content', 'product' ); ?>

			<?php endwhile; // end of the loop. ?>

		<?php woocommerce_product_loop_end(); ?>

						<?php }
	else echo'<h2>К сожалению в наличии нету шин подходящего типоразмера</h2>';?>
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы