2010-07-22 14 views

Respuesta

19

Puede usar el miembro current_post de la instancia del objeto WP_Query para obtener la iteración de la publicación actual;

while (have_posts()) : the_post(); 

    // your normal post code 

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

     // your ad code here 

    } 

endwhile; 

Nota, si usted está utilizando esta dentro de una función, necesitará globalizar $wp_query.

+0

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

+1

@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 ciclo while), en realidad devolverá 'true' porque 0 módulo cualquier número real es siempre 0. El código del anuncio se está insertando incorrectamente antes de su primer publicación, cuarta publicación, séptima publicación, etc. El código actualizado debería decir: '($ wp_query-> current_post + 1)% 3'. –

+1

@AdamMcArthur insertar el código de anuncio antes de la cuarta y séptima publicación es * correcto * dada la descripción de la pregunta diciendo que los anuncios deben insertarse * "después de cada 3 mensajes" *. Tiene razón al insertar un anuncio antes de que la primera publicación no coincida con la especificación, pero la solución propuesta, que insertaría anuncios después de la 2ª/5ª/8ª publicación en lugar de la 3ª/6ª/9ª publicación según lo solicitado, no lo hace ya sea. –

0

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

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

Sin saber por qué, pero los métodos sugeridos no funcionaron para mí, tuve que recurrir a la siguiente

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

    $loop_counter++; 
} 

Más seguro que jugando con variables globales si me preguntas.

Cuestiones relacionadas