Bucle de WordPress: obtenga el recuento actual de publicaciones dentro de The Loop

2 minutos de lectura

avatar de usuario
Kartik Rao

Cuando estoy dentro de The Loop, quiero recuperar el recuento de publicaciones actual.

Por ejemplo, después de cada 3 publicaciones, quiero insertar un anuncio.

Entonces, ¿cómo obtengo el valor del conteo de bucles?

avatar de usuario
elmedicomuerto

Puedes usar el current_post miembro de WP_Query instancia de objeto para obtener la iteración posterior actual;

while ( have_posts() ) : the_post();

    // your normal post code

    if ( ( $wp_query->current_post + 1 ) % 3 === 0 ) {

        // your ad code here

    }

endwhile;

Tenga en cuenta que si está usando esto dentro de una función, deberá globalizar $wp_query.

  • Probé este método. ¡El anuncio se inserta antes y después de cada 3 publicaciones! ¿Cómo hago para insertar el anuncio solo después de 3 publicaciones?

    – Kartik Rao

    22 de julio de 2010 a las 12:21

  • @KartikRao Para referencia futura, esta respuesta es ligeramente defectuosa. Dado que los índices comienzan en 0, la primera vez que se ejecuta el condicional (la primera iteración del bucle while), en realidad devolverá true porque el módulo 0 cualquier número real siempre es 0. El código de anuncio se inserta incorrectamente antes de su primera publicación, cuarta publicación, séptima publicación, etc. El código actualizado debe decir: ($wp_query->current_post + 1) % 3.

    – Adam MacArthur

    17 mayo 2015 a las 14:08


  • @AdamMcArthur insertando el código de anuncio antes de las publicaciones cuarta y séptima es correcto dada la descripción de la pregunta que dice que se deben insertar anuncios “después de cada 3 publicaciones”. Tiene razón en que insertar un anuncio antes de la primera publicación no coincide con las especificaciones, pero su solución propuesta, que insertaría anuncios después de las publicaciones 2, 5 y 8 en lugar de las publicaciones 3, 6 y 9, según lo solicitado, no lo hace. o.

    –Mark Amery

    17 mayo 2015 a las 14:38


¿Por qué no incrementar una variable y luego mostrar sus anuncios cuando sea necesario?

while(LOOP)
    echo $i%3==0 ? $ad : '';
    $i++

No estoy seguro de por qué, pero los métodos sugeridos no funcionaron para mí, tuve que recurrir a lo siguiente

$loop_counter = 1;
while( $query->have_posts() )
{
    //Do your thing $query->the_post(); etc

    $loop_counter++;
}

Más seguro que jugar con globales si me preguntas.

¿Ha sido útil esta solución?