¿Debería restablecerse 'setup_postdata ()' con 'wp_reset_postdata ()'?

2

Comenzar con un ejemplo tiene más sentido, así que aquí hay una función de ejemplo:

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 . '">';

    }
}

NOTA: El código es solo para darle una idea de lo que estoy tratando de lograr y no exactamente cómo lo estoy haciendo.

Ahora que estamos llegando al punto, ¿debería cerrarse setup_postdata( $post ) con wp_reset_postdata() como se muestra en el ejemplo?

    
pregunta its_me 27.12.2013 - 17:09

1 respuesta

5

Como setup_postdata está jugando con variables globales que pueden ser utilizadas (muy probablemente: son ) utilizadas por otros bucles (incluido The Loop ), siempre debe restablecer estas variables a lo que deberían ser, de acuerdo con la consulta principal (es decir, lo que WordPress cree que el usuario deseaba en primer lugar). Además, se proporciona setup_postdata con (una referencia a) el $post global, que podría modificarse posteriormente.

Entonces, sí, setup_postdata debe ir acompañado de wp_reset_postdata .

Como puede ver en el código , la función reset_postdata está, de hecho, llamando a setup_postdata en el objeto original $post .

    
respondido por el tfrommen 27.12.2013 - 19:48

Lea otras preguntas en las etiquetas