Как исправить начальную загрузку для рекомендуемого продукта в Woocommerce

Я попробовал несколько плагинов для того, чтобы добавить карусель слайдеров для моего сайта WordPress WooCommerce, но они не сработали, как я планировал, поэтому я попытался создать самостоятельно. Его почти сработало, за исключением того, что он отображает дополнительные сообщения, которые вообще не существуют. Они не существуют даже как продукты. Первое изображение показывает продукт, который показан. Вторая картинка — это дополнительный контент, которого нет вообще. Количество таких ненужных постов равно кратному общему количеству рекомендуемых товаров. Предложение по аналогичному вопросу отражает почти то, что я сделал, но у него есть проблемы. В моем случае у меня есть 5 рекомендуемых продуктов, и он отображает 25 ненужных сообщений. В настоящее время я пытался отображать только один элемент за раз, и после исправления этой проблемы я буду отображать по 3 сообщения за раз, так что он будет повторяться дважды, давая 6 сообщений для скольжения.

введите описание изображения здесьвведите описание изображения здесь

<div id="featured" class="carousel slide ">
<div class="carousel-inner ">
<?php
$args = array( 'post_type' => 'product',
'meta_key' => '_featured',
'meta_value' => 'yes',
'posts_per_page' => 8,
'post_status'     => 'publish',
'offset'          => 0,
'numberposts'     => 6,
//'orderby' =>'rand',
'order' => 'DESC'
);
$featured_loop = new WP_Query( $args );
//echo "<pre>";
//print_r($featured_loop);
//echo "</pre>";

if ( $featured_loop->have_posts()){

$i = 1; $count;
for ($count=0; $count < 6;) {

foreach ( $featured_loop as $featured ) {
$featured_loop->the_post();
?>
<div class=
<?php
echo '"';
echo 'item ';
if ($i == 1) {
echo 'active';
}

echo '"';

?>>

<div class="col-xs-6 col-sm-4 col-md-4 col-lg-4 ">
<div class="thumbnail">
<i class="tag"></i>
<a id="id-<?php the_id(); ?>" href="<?php the_permalink(); ?>" title="<?php the_title(); ?>">
<?php

if (has_post_thumbnail( $featured->post->ID )){
echo get_the_post_thumbnail($featured->post->ID, 'shop_catalog');
}
else {
echo '<img width ="150" src="'.woocommerce_placeholder_img_src().'" alt="Placeholder" class="img-responsive img-rounded" />';
}

?>
</a>
</div><!-- thumbnail -->
<div class="panel-body text-center">
<h6><?php the_title(); ?> </h6>
</div><!-- panel-body text-center -->

</div><!-- col-xs-6 col-sm-4 col-md-4 col-lg-4 -->
</div>
<?php

$i++;}
$count++;

}

}?></div><!-- carousal item class ends --></div><!-- carousal inner ends -->
<a class="left carousel-control" href="#featured" data-slide="prev"><i class="fa fa-arrow-left"></i></a>
<a class="right carousel-control" href="#featured" data-slide="next"><i class="fa fa-arrow-right"></i></a>

<?php wp_reset_postdata(); wp_reset_query(); ?>
</div><!-- carousel slide -->

1

Решение

Прежде всего, ваша итерация неверна. Вы сначала работаете с уродливым for петля n= 6 раз, то для каждого целого числа от 0 до 5 вы выполняете foreach петля m В результате получается неправильный цикл со сложностью O (n * m), который не решает вашу проблему.

Вот твой код, переписанный. Надеюсь, поможет.

<div id="featured" class="carousel slide ">
<div class="carousel-inner ">
<?php
$args          = array(
'post_type'      => 'product',
'meta_key'       => '_featured',
'meta_value'     => 'yes',
'posts_per_page' => 6,
'post_status'    => 'publish',
'offset'         => 0,
'order'          => 'DESC'
);
$featured_loop = new WP_Query( $args );
if ( $featured_loop->have_posts() ):
while ( $featured_loop->have_posts() ) : $featured_loop->the_post(); ?>
<div class="<?php echo 'item'; ?>">
<div class="col-xs-6 col-sm-4 col-md-4 col-lg-4 ">
<div class="thumbnail">
<i class="tag"></i>
<a id="id-<?php the_id(); ?>" href="<?php the_permalink(); ?>" title="<?php the_title(); ?>">
<?php echo woocommerce_get_product_thumbnail(); ?>
</a>
</div>
<div class="panel-body text-center">
<h6><?php the_title(); ?> </h6>
</div>
</div>
</div>
<?php endwhile; ?>
<a class="left carousel-control" href="#featured" data-slide="prev"><i class="fa fa-arrow-left"></i></a>
<a class="right carousel-control" href="#featured" data-slide="next"><i class="fa fa-arrow-right"></i></a>
<?php wp_reset_postdata(); endif; ?>
</div>
</div>
<?php wp_reset_query(); ?>
2

Другие решения

Ответ на это с помощью @Sorin Gheata. Он забыл заставить его работать как загрузочная карусель.

<div id="featured" class="carousel slide ">
<div class="carousel-inner ">
<?php
$args          = array(
'post_type' => 'product',
'meta_key' => '_featured',
'meta_value' => 'yes',
'numberposts'     => 6,
'posts_per_page' => 6
);
$featured_loop = new WP_Query( $args );//global $product;
if ( $featured_loop->have_posts() ):
while ( $featured_loop->have_posts() ) : $featured_loop->the_post(); ?>
<div class=
<?php
echo '"';
echo 'item ';
if ($i == 1) {
echo 'active';
}

echo '"';

?>>
<div class="col-xs-6 col-sm-4 col-md-4 col-lg-4 ">
<div class="thumbnail">
<i class="tag"></i>
<a id="id-<?php the_id(); ?>" href="<?php the_permalink(); ?>" title="<?php the_title(); ?>">
<?php echo woocommerce_get_product_thumbnail(); ?>
</a>
</div>
<div class="panel-body text-center">
<h6><?php the_title(); ?> </h6>
</div>
</div>
</div>

<?php  $i++; endwhile; ?>
<a class="left carousel-control" href="#featured" data-slide="prev"><i class="fa fa-arrow-left"></i></a>
<a class="right carousel-control" href="#featured" data-slide="next"><i class="fa fa-arrow-right"></i></a>
<?php wp_reset_postdata(); endif; ?>
</div>
</div>
<?php wp_reset_query(); ?>
1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector