¿Qué hace setup_postdata($post)?

15 may 2013, 22:34:13
Vistas: 25K
Votos: 19

El codex lo define como 'Configura los datos globales del post. Ayuda a formatear los resultados de consultas personalizadas para usar Template tags.' No entiendo esto realmente.

Aquí hay un ejemplo de código:

global $post;
$args = array( 'numberposts' => -1);
$posts = get_posts($args);
foreach( $posts as $post) : setup_postdata($post);
echo $post->ID;
endforeach; 

¿Podrían explicarlo por favor?

0
Todas las respuestas a la pregunta 1
0
21

Las funciones de etiquetas de plantilla dependen de variables globales para acceder a la publicación que se está procesando y recuperar datos de ella o relacionados con ella.

La variable principal entre estas es $post, que contiene el objeto de la publicación en sí.

En tu ejemplo no es explícito, pero lo que está sucediendo es que tu bucle asigna datos a $post. Si su nombre no fuera $post, necesitarías nombrarlo explícitamente (global $post; $post = $some_other_post;).

Sin embargo, hay un montón de otras variables globales y el propósito de setup_postdata() es llenarlas con datos. Si miras el código fuente, estas son:

global $id, $authordata, $currentday, $currentmonth, $page, $pages, $multipage, $more, $numpages;

Ten en cuenta que en la mayoría de los casos deberías llamar a wp_reset_postdata() después para devolver las variables globales a su estado original.

15 may 2013 22:40:16