$ post> ID exibe identificação de postagem errada

Eu fiz uma pergunta sobre listar todas as subpáginas antes:

Listando todas as subpáginas?

Mas todas as perguntas estavam erradas.

De qualquer forma, agora tenho uma pergunta mais simples.

global $post; echo $post>ID 

Funciona totalmente bem, mas apenas nas barras laterais das páginas. Quando está ao lado do loop do blog (em uma seção de blog), fica louco, por exemplo, o Blog tem ID de 216 (e $ post> ID em loop.php mostra 216), mas o $ post> ID na barra lateral mostra 87. Por que isso está acontecendo? Como consertar isso?

Obrigado!

[editar]

Tenho a suspeita de que o loop e a barra lateral estão ambos incluídos na página de índice separadamente e o loop está recebendo identificação de postagem diferente da barra lateral. A grande questão é como mudar isso.

[editar para Rarst]

  wp_reset_postdata(); global $post; $children = wp_list_pages('title_li=&child_of='.$post->ID.'&echo=0'); echo $children; 

Dá o mesmo resultado. Funciona com páginas, não com blog. Eu tenho um loop normal, como em Twenty Ten, por exemplo.

Solutions Collecting From Web of "$ post> ID exibe identificação de postagem errada"

Se eu entender corretamente, você está tentando exibir uma lista de páginas is_page() de uma página em um widget, se assim for, primeiro verifique se você está em uma página usando a etiqueta condicional is_page() então você pode usar $ wp_query-> get_queried_object_id () Como t31os apontou para que sua function de exibição de widgets pareça assim:

 if (is_page()){ Global $wp_query; $current_page_id = $wp_query->get_queried_object_id(); $children = wp_list_pages('title_li=&child_of='.$current_page_id.'&echo=0'); echo $children; } 

Então, apenas se você estiver em uma página, este código será executado

$post alterações sempre que the_post() ou setup_postdata() são usados ​​- o que está na maioria dos loops.

Use wp_reset_postdata() para retroceder para dados originais.

Editar

$post contém dados de postagem individual , configurados durante o Loop. Não faz sentido usá-lo fora desse contexto.

Para processar várias páginas, você precisa consultá-las (com get_pages() por exemplo) e trabalhar com isso.