这个很奇怪。
此代码:
$post->ID
除了博客页面(该页面设置为blog on/wp admin/options reading.php),每次都显示正确的ID。
在该页面上,$post->ID返回给定页面的第一篇博客文章的ID。
现在,棘手的是,我已经尝试从我的所有页面中删除所有循环,完全删除循环。php文件,禁用了所有可能影响$post的小部件,但它仍然返回错误的ID。
有什么提示吗?
我的索引。php非常标准:
<?php get_header();?>
<?php get_template_part( \'loop\', \'index\' ); ?>
<?php get_footer(); ?>
和回路。php是:
<?php while ( have_posts() ) : the_post(); ?>
contents
<?php endwhile; ?>
也许问题是我正在试图获取标题中的ID。php?
是的,wp_reset_postdata()
似乎也没什么帮助:/
最合适的回答,由SO网友:s_ha_dum 整理而成
在该页面上,$post->ID返回给定页面的第一篇博客文章的ID。
这就是它的工作原理。$post
设置为循环中的第一个立柱。在与帖子或页面相同的单个帖子和页面上。在存档页面上,这是结果集中的第一篇文章。如果你想一想,两者其实是一样的。单个帖子和页面在集合中只有一个结果,恰好与您期望的帖子或页面匹配。
现在,棘手的是,我已经尝试从我的所有页面中删除所有循环,完全删除循环。php文件,禁用了可能影响$post的所有小部件,但它仍然返回错误的ID。
主查询在加载模板之前运行,并且$post
在该过程中设置。从模板中删除内容不会改变这一点。
有什么提示吗?
对不要依赖$post
除了在一个适当的循环内。如果需要有关页面本身的信息,请使用:
$pobj = get_queried_object();
var_dump($pobj); // debugging
参考:
http://codex.wordpress.org/Function_Reference/get_queried_object