Wenn ich mich in The Loop befinde, möchte ich die aktuelle Beitragsanzahl abrufen.
Ich möchte zum Beispiel nach jeweils 3 Beiträgen eine Anzeige schalten.
Wie erhalte ich also den Wert der Schleifenanzahl?
Kartik Rao
Wenn ich mich in The Loop befinde, möchte ich die aktuelle Beitragsanzahl abrufen.
Ich möchte zum Beispiel nach jeweils 3 Beiträgen eine Anzeige schalten.
Wie erhalte ich also den Wert der Schleifenanzahl?
Der tote Sanitäter
Du kannst den … benutzen current_post
Mitglied von WP_Query
Objektinstanz, um die aktuelle Post-Iteration zu erhalten;
while ( have_posts() ) : the_post();
// your normal post code
if ( ( $wp_query->current_post + 1 ) % 3 === 0 ) {
// your ad code here
}
endwhile;
Beachten Sie, dass Sie globalisieren müssen, wenn Sie dies innerhalb einer Funktion verwenden $wp_query
.
Ich habe diese Methode ausprobiert. Die Anzeige wird vor und nach jeweils 3 Beiträgen geschaltet! Wie bekomme ich es hin, dass die Anzeige erst nach 3 Posts eingefügt wird.
– Kartik Rao
22. Juli 2010 um 12:21 Uhr
@KartikRao Für die Zukunft ist diese Antwort so leicht fehlerhaft. Da Indizes bei 0 beginnen, wird die Bedingung beim ersten Ausführen (der ersten Iteration der While-Schleife) tatsächlich zurückgegeben true
weil 0 modulus jede reelle Zahl immer 0 ist. Der Anzeigencode wird vor Ihrem ersten Post, vierten Post, siebten Post usw. falsch eingefügt. Aktualisierter Code sollte lauten: ($wp_query->current_post + 1) % 3
.
– Adam McArthur
17. Mai 2015 um 14:08 Uhr
@AdamMcArthur das Einfügen des Anzeigencodes vor dem vierten und siebten Post ist Korrekt Angesichts der Fragebeschreibung, die besagt, dass Anzeigen eingefügt werden sollen “nach jeweils 3 Beiträgen”. Sie haben Recht, dass das Einfügen einer Anzeige vor dem ersten Post nicht der Spezifikation entspricht, aber Ihre vorgeschlagene Lösung – die Anzeigen nach dem 2./5./8. Post anstelle des 3./6./9. Post einfügen würde, wie angefordert – stimmt nicht entweder.
– Mark Amery
17. Mai 2015 um 14:38 Uhr
Warum nicht eine Variable erhöhen und dann Ihre Anzeigen bei Bedarf anzeigen?
while(LOOP)
echo $i%3==0 ? $ad : '';
$i++
Unsicher warum, aber die vorgeschlagenen Methoden haben bei mir nicht funktioniert, ich musste auf Folgendes zurückgreifen
$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.