$post->ID displays wrong ID

时间:2013-08-08 作者:Wordpressor

这个很奇怪。

此代码:

$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() 似乎也没什么帮助:/

1 个回复
最合适的回答,由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

结束

相关推荐

将WordPress URL中的类别名称替换为文章ID

我想知道,如何使用wordpress在url中用文章id替换类别名称?例如,我有这样一个url:http://mywebsite.com/css/the-name-of-my-css-article 我想把它改成:http://mywebsite.com/article-id/the-name-of-my-css-article 有人知道怎么做吗?