es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Envuelve cada x cantidad de elementos dentro de un div: Bucle While en Php

Tengo un código que funciona para envolver cada 2 publicaciones en un div. Ahora quiero envolver las publicaciones en un div cada 6 o tal vez 8.

El código es el siguiente:

<?php 

$loop = new WP_Query( array( 
    'post_type' => 'latest_posts', 
    'posts_per_page' => 100, 
    'post_status' => 'publish' ) );

<?php $i = 0; ?>

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

    <?php if ( $i % 2 ==  0) : ?>
        <div class="flex-content-container">
    <?php endif; ?>

    <div class="latest-posts">

        <h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>

    </div>

    <!-- Cambié == 0 a != 0 -->
    <?php if ( $i % 2 != 0 ) : ?>
        </div>
    <?php endif; ?>

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

<?php wp_reset_query(); ?>

<!-- Agregué el cierre </div> para un número impar de publicaciones -->
<?php if ( $i % 2 != 0 ) : ?>


    <?php endif; ?>

Pensé que solo podía cambiar el 2 al número que quisiera, pero eso no parece funcionar.

¿Alguna ayuda, por favor?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para envolver cada 6 u 8 publicaciones en un div, puedes modificar el código de la siguiente manera:

    1. Reemplaza la condición $i % 2 == 0 con lo siguiente:
    • Para envolver cada 6 publicaciones: $i % 6 == 0
    • Para envolver cada 8 publicaciones: $i % 8 == 0
    1. Modifica la condición de cierre del div para que coincida con la nueva condición de envoltura. Por ejemplo:
    • Para cada 6 publicaciones: if ( $i % 6 != 0 && $i % 2 == 0 )
    • Para cada 8 publicaciones: if ( $i % 8 != 0 && $i % 2 == 0 )

    Aquí tienes un ejemplo de código para envolver cada 6 publicaciones:

    <?php 
        $loop = new WP_Query( array( 
            'post_type' => 'latest_posts', 
            'posts_per_page' => 100, 
            'post_status' => 'publish' ) ); 
    ?>
    <?php $i = 0; ?>
    <?php while ( $loop->have_posts() ) : $loop->the_post(); ?>
        <?php if ( $i % 6 == 0) : ?>
            <div class="flex-content-container">
        <?php endif; ?>
    
        <div class="latest-posts">
            <h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
        </div>
    
        <?php if ( $i % 6 != 5 && $i % 2 == 1 ) : ?>
            <div class="latest-posts">
                <h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
            </div>
        <?php endif; ?>
    
        <?php if ( $i % 6 == 5 || $loop->current_post == $loop->post_count - 1 ) : ?>
            </div>
        <?php endif; ?>
    
        <?php $i++; endwhile; ?>
    <?php wp_reset_query(); ?>
    

    En este ejemplo, cada 6 publicaciones se envuelven en un div, y un par de publicaciones comparten el mismo div de envoltura. La condición if con el módulo ( $i % 6 != 5 && $i % 2 == 1 ) se utiliza para mostrar la segunda publicación de cada par. La condición de cierre del div se modifica para verificar el módulo 5, que es el índice del último elemento de cada par. El cierre del div también se agrega después del bucle para asegurarse de que el último conjunto de publicaciones se envuelva correctamente.

Comments are closed.