@kentos

Почему выводится товар три раза?

Делаю запрос через цикл, и выводится три товара одинаковых.

$args = array(
		'posts_per_page' => -1,
		'post_type' => 'product',
		'post_status'         => 'publish',
		'ignore_sticky_posts' => 1,
    	'order'               => 'DESC',
		'tax_query' => array(
			array(
				'taxonomy' => 'product_tag',
				'field' => 'slug',
				'terms' => 'popular',
			),
		),
	);


	$loop = new WP_Query($args);

	$product_count = $loop->post_count;
	

	if ($product_count > 0) :
	echo '<div class="swiper-wrapper">';
		while ($loop->have_posts()) : $loop->the_post();

			global $product;

			echo '
			<div class="swiper-slide">
			<a href="#">
				<div class="product-slide">
					<div class="product-hearth"><svg class="product-global__hearth"><use xlink:href="img/sprite.svg#hearth-icon"></use></svg></div>
					<div class="product-slide-img"><img src="img/product-img.jpg" alt="" class="product-slide__img"></div>
					<div class="product-global__footer">
						<p class="product-global__autor">Ольга Примаченко</p>
						<h3 class="product-global__title">К себе нежно</h3>
						<div class="product-global__interface">
							<div class="product-global__price">790</div>
							<div class="product-global__cart"><svg class="product-global__cart"><use xlink:href="img/sprite.svg#cart-icon"></use></svg></div>
						</div>
					</div>
				</div>
			</a>
			</div>
		';
		endwhile;
	echo '</div>';
	else :

		_e('No product matching your criteria.');

	endif; // endif $product_count > 0

	return ob_get_clean();

В чем может быть причина?
  • Вопрос задан
  • 99 просмотров
Пригласить эксперта
Ответы на вопрос 1
artzolin
@artzolin Куратор тега WordPress
php, WordPress разработка сайтов artzolin.ru
У вас три раза выводится вот этот кусок

echo '
      <div class="swiper-slide">
      <a href="#">
        <div class="product-slide">
          <div class="product-hearth"><svg class="product-global__hearth"><use xlink:href="img/sprite.svg#hearth-icon"></use></svg></div>
          <div class="product-slide-img"><img src="img/product-img.jpg" alt="" class="product-slide__img"></div>
          <div class="product-global__footer">
            <p class="product-global__autor">Ольга Примаченко</p>
            <h3 class="product-global__title">К себе нежно</h3>
            <div class="product-global__interface">
              <div class="product-global__price">790</div>
              <div class="product-global__cart"><svg class="product-global__cart"><use xlink:href="img/sprite.svg#cart-icon"></use></svg></div>
            </div>
          </div>
        </div>
      </a>
      </div>
    ';


Нужно динамически брать из цикла $loop заголовок, ссылку, изображение, цену и автора используя функции the_title(), the_post_thumbnail(), the_permalink() и т.д.

А еще правильнее использовать wc_get_template_part( 'content', 'product' );. Советую найти этот шаблон, разобрать и переделать ваш код по спецификации woocommerce

global $product; и return ob_get_clean(); из вашего кода можно смело удалить, а проверку if ( $loop->have_posts() ) { ... } добавить
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы