2010-07-22 17 views

Antwort

19

Sie können das current_post Mitglied der WP_Query Objektinstanz verwenden, um die aktuelle Post-Iteration abzurufen;

while (have_posts()) : the_post(); 

    // your normal post code 

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

     // your ad code here 

    } 

endwhile; 

Hinweis, wenn Sie in einer Funktion diese verwenden sind, müssen Sie $wp_query globalisieren.

+0

Ich habe diese Methode versucht. Die Anzeige wird vor und nach jeweils 3 Posts eingefügt! Wie bekomme ich die Anzeige erst nach 3 Posts? –

+1

@KartikRao Für zukünftige Referenz ist diese Antwort so leicht fehlerhaft. Da Indizes bei der ersten Ausführung der Bedingung (der ersten Iteration der while-Schleife) bei 0 beginnen, gibt sie tatsächlich "true" zurück, da 0 modul jede reelle Zahl immer 0 ist. Der Anzeigencode wird vor der ersten falsch eingefügt Post, vierter Post, siebter Post - usw. Aktualisierter Code sollte lauten: '($ wp_query-> current_post + 1)% 3'. –

+1

@AdamMcArthur das Einfügen des Anzeigencodes vor dem vierten und siebten Beitrag ist * korrekt * mit der Frage Beschreibung, dass Anzeigen eingefügt werden sollen * "nach jeweils 3 Beiträgen" *. Sie haben Recht, wenn Sie eine Anzeige einfügen, bevor der erste Beitrag nicht der Spezifikation entspricht, aber Ihr vorgeschlagenes Update - das Anzeigen nach dem 2./5./8. Beitrag anstelle des 3./6./9. Beitrags wie gewünscht einfügen würde - nicht entweder. –

0

Warum nicht eine Variable erhöhen dann Ihre Anzeigen bei Bedarf anzeigen?

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

Ungewiss warum, aber die vorgeschlagenen Methoden funktionierten für mich nicht aus, ich hatte auf die zurückgegriffen werden folgende

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

    $loop_counter++; 
} 

Sicherer als mit Globals zu spielen, wenn Sie mich fragen.

Verwandte Themen