wake-up-neo.com

Soll 'setup_postdata ()' mit 'wp_reset_postdata ()' zurückgesetzt werden?

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 &rarr;</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?

2
its_me

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.

5
tfrommen