2010-07-22 9 views

risposta

19

È possibile utilizzare il membro current_post dell'istanza dell'oggetto WP_Query per ottenere l'iterazione corrente;

while (have_posts()) : the_post(); 

    // your normal post code 

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

     // your ad code here 

    } 

endwhile; 

nota, se si sta utilizzando questo all'interno di una funzione, è necessario globalizzare $wp_query.

+0

Ho provato questo metodo. L'annuncio viene inserito prima e dopo ogni 3 post! Come faccio a inserire l'annuncio solo dopo 3 post. –

+1

@KartikRao Per riferimento futuro, questa risposta è sempre leggermente imperfetta. Poiché gli indici iniziano da 0, la prima volta che viene eseguito il condizionale (la prima iterazione del ciclo while) restituirà effettivamente 'true' perché il modulo 0 qualsiasi numero reale è sempre 0. Il codice dell'annuncio viene inserito in modo non corretto prima del primo post, quarto post, settimo post - ecc. Il codice aggiornato dovrebbe essere: '($ wp_query-> current_post + 1)% 3'. –

+1

@AdamMcArthur inserendo il codice dell'annuncio prima che il quarto e il settimo post siano * corretti * data la descrizione della domanda che dice che gli annunci devono essere inseriti * "dopo ogni 3 post" *. Hai ragione a inserire un annuncio prima che il primo post non corrisponda alle specifiche, ma la tua proposta di correzione - che inserirà annunci dopo il 2 °/5 °/8 ° posto anziché i 3 °/6 °/9 ° posto come richiesto - non o. –

0

Perché non incrementare una variabile, quindi visualizzare gli annunci quando necessario?

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

sicuri perché, ma i metodi suggeriti non ha funzionato per me, ho dovuto ricorrere al seguente

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

    $loop_counter++; 
} 

Più sicuro di giocare con variabili globali se mi chiedete.

Problemi correlati