web-dev-qa-db-fra.com

Modifier cette boucle pour l'adapter à mon curseur jQuery (diapositives)

J'essaie de créer un curseur qui prend les vignettes d'un certain type de message personnalisé et les affiche pour chaque "diapositive". Le curseur et les vignettes fonctionnent comme ils le devraient, mais je ne sais pas comment modifier la boucle pour qu’elle affiche 4 messages dans un conteneur, puis répète avec les 4 suivants, etc.

Ma boucle ressemble à ceci:

<div id="slides">
    <div class="slides_container">

        <?php $loop = new WP_Query(array('post_type' => 'fastighet', 'posts_per_page' => -1, 'orderby'=> 'ASC')); ?>
        <?php while ( $loop->have_posts() ) : $loop->the_post(); ?>

            <div class="slide">
                <?php $url = get_post_meta($post->ID, "url", true);
                if($url!='') {
                    echo '<a href="'.$url.'">';
                    echo the_post_thumbnail('admin-list-thumb');
                    echo '</a>';
                } else {
                    echo the_post_thumbnail('admin-list-thumb');
                } ?>
                <div class="caption">
                    <h5><?php the_title(); ?></h5>
                </div>
            </div>

        <?php endwhile; ?>
        <?php wp_reset_query(); ?>

    </div> <!-- end .slides_container -->

    <a href="#" class="prev">prev</a>
    <a href="#" class="next">next</a>

</div> <!-- end .slides -->

Chaque div avec la classe de diapositive devient une diapositive comme vous pouvez le voir. Mais comment puis-je le faire mettre 4 postes dans chaque diapositive, puis 4 postes plus dans une autre diapositive, etc.

Toute aide ou conseils seraient vraiment appréciés!

2
Johan Dahl

J'ai essayé des maths très simples. <div class="slide"> imprimera tous les 4 messages. Donc, si instruction avec la logique de la vieille école $i%4 == 0

<div class="slides_container">

                        <?php 
                            $args = array(
                                                        'post_type' => 'fastighet',
                                                        'numberposts' => -1,
                                                        'orderby' => 'ASC'
                                                    );
                            $posts = get_posts($args);
                            ?>
                        <?php $i = 0; foreach($posts as $post): ?>
                            <?php if($i%4 == 0): ?>
                                <div class="slide">
                            <?php endif; 
                                        $url = get_post_meta($post->ID, "url", true);
                                        if($url) {
                                                echo '<a href="'.$url.'">';
                                                echo the_post_thumbnail('admin-list-thumb');
                                                echo '</a>';
                                        } else {
                                                echo the_post_thumbnail('admin-list-thumb');
                                        } ?>
                                        <div class="caption">
                                                <h5><?php the_title(); ?></h5>
                                        </div>
                              <?php if($i%4 == 3): ?></div> <!--end .slide--><?php endif; ?> 

                        <?php $i++; endforeach; ?>

                </div> <!-- end .slides_container -->

Dites-moi comment ça se passe. Merci!

2
Sisir

Presque correct. Le seul problème était que vous ne souhaitiez pas réellement imprimer le début et la fin sur le même index. Le code suivant fonctionne pour moi dans une situation similaire. Le seul changement réel est que $ i commence à 1 et imprime les balises d’ouverture et de fermeture des diapositives sur différents comptes.

A également pris la liberté de nettoyer le code un peu.

<div id="slides">
    <div class="slides_container">

        <?php 
        $loop = new WP_Query( array( 
            'post_type' => 'fastighet', 
            'posts_per_page' => -1 
        ) ); 
        $i = 1; 
        while ( $loop->have_posts() ) : 
            $loop->the_post(); 
            if( $i % 4 == 1 ) : 
                ?>
                <div class="slide">
                <?php 
            endif; 
            ?>
            <div class="fastighet-slider-entry">
                <a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_post_thumbnail(); ?></a>
                <div class="caption">
                    <h5><?php the_title(); ?></h5>
                </div>
            </div> <!-- end .fastighet-slider-entry -->
            <?php 
            if( $i % 4 == 0 ) : 
                ?>
                </div>
                <?php 
            endif; 
            ++$i; 
        endwhile; 
        wp_reset_query(); 
        ?>

    </div> <!-- end .slides_container -->

    <a href="#" class="prev">prev</a>
    <a href="#" class="next">next</a>

</div> <!-- end .slides -->
0
Kokarn