¿Qué hace setup_postdata ($ post)?

13

El códice lo define como 'Configurar datos de publicación globales. Ayuda a formatear resultados de consultas personalizadas para usar 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?

Mattnewbie
fuente

Respuestas:

16

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

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

Sin embargo, hay muchos otros globales y su propósito 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;

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

Rarst
fuente