Es ist sinnvoller, mit einem Beispiel zu beginnen. Hier ist eine Beispielfunktion:
function seo_meta_tags() {
global $post;
if( is_singular() ) {
setup_postdata( $post );
$description = str_replace( '... <a class="read-more" href="' . get_permalink() . '">Cont. reading →</a>', '...', get_the_excerpt() );
wp_reset_postdata();
echo '<meta itemprop="description" name="description" content="' . $description . '">';
}
}
HINWEIS: Der Code soll Ihnen nur eine Vorstellung davon geben, was ich zu erreichen versuche und nicht genau, wie ich es tue .
Kommen wir nun zum Punkt, sollte setup_postdata( $post )
wie im Beispiel gezeigt mit wp_reset_postdata()
geschlossen werden?
Da setup_postdata
messing mit globalen Variablen ist, die möglicherweise (höchstwahrscheinlich:) von anderen Schleifen verwendet werden (einschließlich The Loop ), sollten Sie dies immer tun Setzen Sie diese Variablen auf das zurück, was sie sein sollten - entsprechend der Hauptabfrage (dh was WordPress den Benutzer zuerst wünscht).
Zusätzlich wird setup_postdata
mit (einem Verweis auf) den $post
global geliefert, der später geändert werden kann.
Also, ja, setup_postdata
sollte von wp_reset_postdata
begleitet werden.
Wie Sie im Code sehen können, ruft die Funktion reset_postdata
tatsächlich setup_postdata
für das Objekt original $post
auf.