¿Qué hace setup_postdata ($ post)?

11

El códice lo define como 'Configurar datos globales de publicaciones. Ayuda a dar formato a resultados de consultas personalizadas para el uso de etiquetas de plantilla '. Realmente no entiendo esto.

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; 

Por favor, ¿puedes explicar?

    
pregunta mattnewbie 15.05.2013 - 21:34

1 respuesta

14

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

La variable principal de ellos es $post , que contiene el objeto post en sí. En su ejemplo, no es explícito, pero lo que sucede es que su bucle asigna datos a $post , si el nombre para la iteración no fuera $post , tendría que hacerlo explícitamente ( global $post; $post = $some_other_post; ).

Sin embargo, hay un montón de otros globales y el propósito de setup_postdata() es completarlos con datos. Si nos fijamos en la fuente, a saber, 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() para devolver a los globales a su estado original.

    
respondido por el Rarst 15.05.2013 - 21:40

Lea otras preguntas en las etiquetas