$POST>ID显示错误的帖子ID

时间:2011-03-05 作者:Wordpressor

我之前问过一个关于列出所有子页的问题:

Listing all sub-pages?

但所有的问题都错了。

无论如何,我现在有一个更简单的问题。

global $post;
echo $post>ID
完全可以,但只在页面侧边栏上。当它位于blog循环(在blog部分)旁边时,它会变得疯狂,例如blog的ID为216(loop.php中的$post>ID显示为216),而提要栏中的$post>ID显示为87。为什么会这样?如何解决这个问题?

非常感谢。

[编辑]

我怀疑循环和侧栏都分别包含在索引页中,并且循环得到的帖子ID与侧栏不同。最大的问题是如何改变这一点。

[为Rarst编辑]

 wp_reset_postdata();

                global $post;

                $children = wp_list_pages(\'title_li=&child_of=\'.$post->ID.\'&echo=0\');
                echo $children;
给出相同的结果。它适用于页面,而不是博客。我有一个正常的循环,比如在210中。

2 个回复
最合适的回答,由SO网友:Bainternet 整理而成

如果我理解正确,您正试图在小部件中显示页面的子页面列表,如果是这样,请首先检查您是否在使用条件标记的页面上is_page()然后,您可以像t31os指出的那样使用$wp\\u query->get\\u queryed\\u object\\u id(),因此您的小部件显示功能应该如下所示:

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;
}
因此,只有在页面上,此代码才会运行

SO网友:Rarst

$post 每次都会更改the_post()setup_postdata() 使用-这是在大多数循环中使用的。

使用wp_reset_postdata() 将其返回到原始数据。

Edit

$post 保存的数据individual post,在循环过程中设置。在这种情况下使用它是没有意义的。

要处理多个页面,您需要查询它们(使用get_pages() 例如)并使用它。

结束