Как да поправите bootstrap carousal за представен продукт в Woocommerce

Опитах няколко приставки за включването на плъзгач на продукти за моя сайт woocommerce wordpress, но те не работеха, както възнамерявах, така че се опитах да създам сам. Почти проработи, с изключение на това, че показва допълнителни публикации, които изобщо не съществуват. Те не съществуват дори като продукти. Първата снимка показва представения продукт. Втората снимка е допълнително съдържание, което изобщо не съществува. Броят на такива ненужни публикации е равен на кратното на общия брой представени продукти. Предложението за подобен въпрос отразява почти това, което съм направил, но има проблеми. В моя случай имам 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="/bg<?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="/bg#featured" data-slide="prev"><i class="fa fa-arrow-left"></i></a>
                            <a class="right carousel-control" href="/bg#featured" data-slide="next"><i class="fa fa-arrow-right"></i></a>  

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

person robinleathal    schedule 20.03.2015    source източник


Отговори (2)


Първо, вашата итерация е грешна. Първо изпълнявате неправилно образуван 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="/bg<?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="/bg#featured" data-slide="prev"><i class="fa fa-arrow-left"></i></a>
            <a class="right carousel-control" href="/bg#featured" data-slide="next"><i class="fa fa-arrow-right"></i></a>
            <?php wp_reset_postdata(); endif; ?>
    </div>
</div>
<?php wp_reset_query(); ?>
person Sorin Gheata    schedule 20.03.2015
comment
този не показва нищо. но го накарах да работи с вашия отговор на подобен въпрос. освен това ‹div class= ‹?php echo ''; echo 'елемент'; if ($i == 1) { echo 'активен'; } ехо ''; ?›› е важна част. тъй като е въртележка. - person robinleathal; 20.03.2015
comment
Работи върху моята среда, виждам 6 представени публикации с техните изображения. Така или иначе, радвам се, че успяхте да го разрешите ;) - person Sorin Gheata; 20.03.2015
comment
Хванах те. забравихте, че говоря за включването му в bootstrap carousal. Благодаря ти за помощта - person robinleathal; 20.03.2015

Отговор на това с помощта на @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="/bg<?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="/bg#featured" data-slide="prev"><i class="fa fa-arrow-left"></i></a>
            <a class="right carousel-control" href="/bg#featured" data-slide="next"><i class="fa fa-arrow-right"></i></a>
            <?php wp_reset_postdata(); endif; ?>
    </div>
</div>
<?php wp_reset_query(); ?>
person robinleathal    schedule 20.03.2015