Wie zeige ich ein Bild vor dem ersten Post der Schleife an, wenn ich get_template_part verwende?

Ich habe $ count vorher benutzt, aber nie auf dieses Problem stoßen. Ich kann es nicht zur Arbeit bringen. Ich habe einen eingeschränkten PHP-Hintergrund, also bitte habe Geduld mit mir! Hier ist der $ count Setup-Code:

       

Innerhalb von content.php – hier ist was ich versuche zu tun:

  
<img src="https://wordpress.stackexchange.com/questions/75773/how-do-i-display-an-image-before-the-first-post-of-the-loop-when-im-using-get-t//assets/stories-title.jpg" />

Kann mir jemand erklären, was passiert? Soweit ich weiß, stoße ich auf ein undefiniertes Variablenproblem, aber ich bin mir nicht sicher, wie ich das beheben kann, ohne die $ -Zahl zu brechen … müssen die bedingten statementen und der Inhalt für $ in der gleichen Datei sein zählen, um zu arbeiten?

UPDATE: Das Problem (wie unten beschrieben) hatte einen variablen Gültigkeitsbereich – die Variable $ count wird bei Verwendung von template_part nicht übernommen. Hier ist der feste Code:

functionen.php

 // remember number (so we can count posts) /** * Remember a number. * * @param int|FALSE $add A number to add, or FALSE to reset the counter to 0 (zero). * @return int */ function wpse_count( $add = 0 ) { static $counter = 0; if ( FALSE === $add ) $counter = 0; else $counter += (int) $add; return $counter; } 

index.php

        

Inhalt.php

   
<img src="https://wordpress.stackexchange.com/questions/75773/how-do-i-display-an-image-before-the-first-post-of-the-loop-when-im-using-get-t//assets/stories-title.jpg" />

Zusätzliche Lösung

Eine viel einfachere Lösung für dieses Problem finden Sie unten in einer anderen Antwort. Nur benötigt, um wp_query zu verwenden

 current_post == 0 ) { ?> 

Kein $ -Zähler benötigt.

Solutions Collecting From Web of "Wie zeige ich ein Bild vor dem ersten Post der Schleife an, wenn ich get_template_part verwende?"

Die Variable $count ist nur im Gültigkeitsbereich der aktuellen function verfügbar. Was auch immer in get_template_part() passiert, kann diese Variable nicht kennen.

Sie könnten eine globale Variable verwenden, auf die überall als $GLOBALS['count'] . Aber dann riskierst du Kollisionen mit Plugins und vielleicht anderem Code.

Ich empfehle eine Hilfsfunktion für die functions.php :

 /** * Remember a number. * * @param int|FALSE $add A number to add, or FALSE to reset the counter to 0 (zero). * @return int */ function wpse_count( $add = 0 ) { static $counter = 0; if ( FALSE === $add ) $counter = 0; else $counter += (int) $add; return $counter; } 

Sie können diese function verwenden, um eine beliebige Nummer zu speichern. In Ihrem Beispiel sollte das so aussehen:

 < ?php // Reset the counter wpse_count( FALSE ); if ( have_posts() ) : // Start the Loop while ( have_posts() ) : the_post(); wpse_count( 1 ); get_template_part( 'content', get_post_format() ); endwhile; endif; ?> 

Und in der Vorlage Teil Datei drucken Sie den Wert ohne etwas hinzuzufügen:

 echo wpse_count(); 

Beispiel in TwentyEleven’s content-status.php

 < ?php the_content( __( 'Continue reading →', 'twentyeleven' ) ); echo 'Number: ' . wpse_count(); ?> 

Sie könnten die Variable $wp_query->current_post , um die Position vor dem ersten Post zu bestimmen. kein $counter benötigt.

Inhalt.php

 < ?php if ( $wp_query->current_post == 0 ) { ?> 
< ?php } ?>

Sie erhöhen Ihre $count Variable außerhalb des Teils der Schleife, der durch die Beiträge läuft. Ihr Code muss den Zähler innerhalb der while .

 $count = 0; if ( have_posts() ) : // Start the Loop // $count++; while ( have_posts() ) : the_post(); $count++; echo $count."\n"; get_template_part( 'content', get_post_format() ); endwhile; endif; ?> 

Verwenden Sie dann eine der Optionen in den anderen Antworten, um das Problem mit dem variablen Bereich zu lösen.

Wie wäre es mit den $ GLOBALS [‘count’], um es sicher überall verfügbar zu machen.