O que o setup_postdata ($ post) faz?

11

O codex define como 'Configurar dados globais de postagem. Ajuda a formatar resultados de consulta personalizados para usar tags de modelo. ' Eu realmente não entendo isso.

Aqui está um exemplo 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, você pode explicar?

    
por mattnewbie 15.05.2013 / 21:34

1 resposta

14

As funções da tag de modelo dependem de variáveis globais para acessar a postagem sendo processada e recuperar dados dela ou relacionadas a ela.

A variável principal deles é $post , que contém o próprio objeto post. No seu exemplo, ele não é explícito, mas o que está acontecendo é que o loop atribui dados a $post , se o nome da iteração não for $post , seria necessário fazer isso explicitamente ( global $post; $post = $some_other_post; ).

No entanto, há um monte de outros globais e a finalidade de setup_postdata() é preenchê-los com dados. Se você olhar para a fonte, eles são:

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

Observe que, na maioria dos casos, você deve chamar wp_reset_postdata() para retornar os globals ao seu estado original.

    
por Rarst 15.05.2013 / 21:40

Tags