Wordpress循环get_the_id()

时间:2014-02-06 03:55:03

标签: wordpress

我在header.php,footer.php,single.php等中尝试了以下功能。

var_dump(in_the_loop());
var_dump(get_the_id());

第一个函数给出false(意味着我们不在循环中),第二个函数每次都给出post id。

来自wordpress的get_the_id()说明:

  

检索当前帖子的数字ID。此标记必须在The Loop中。

我只想简单解释一下,如果我把这个函数调出循环,为什么我会得到帖子ID?

1 个答案:

答案 0 :(得分:2)

必须对于get_the_id()来说有点强大...... 为Wordpress提供邪恶的眼睛

它适用于标题和非循环(已确认)。

请注意,帖子/页面在此对话中基本上可以互换。

以这种方式思考WP - >除非你做了奇怪的事情或谈论非页面边缘情况,否则你总是以某种方式,每个页面都有一个帖子ID。当您在安装根目录(例如site.com/)时,会调用帖子,必须显示某些内容。还有其他设置会影响帖子/页面,例如静态首页设置。在类别列表中,如果有页面,我会在循环之前返回第一个ID。

在帖子/页面上,页面ID是(在循环之前设置或多或少。这是URL(漂亮或?p = 123格式)指示内容的结果。使用漂亮的名称,site.com上的页面/ foo-bar /将尝试通过" foo-bar"的固定链接规则查找是否有可用的内容。如果有内容,则获取帖子ID。(简化)

稍后在页面构建中,您将进入循环。但是,在循环之前,您还可以更改,排序或扩充循环 - 例如更改页面ID以进行循环或排序。

关于in_the_loop(),WP说

  

"如果调用者在循环内,则为True;如果循环未启动或已结束,则为false。"通过http://codex.wordpress.org/Function_Reference/in_the_loop

in_the_loop()评估循环是否在起作用(循环是WP世界的关键)。同样重要的是 - 当你在循环中时,WP可以迭代多个页面/帖子(ID)。

我没有关于ID总是如何显示的100%防弹解释,但是当您深入研究API时,可能会出现各种挂钩方法。

我理解你的困惑,并同意你的看法。我认为WP将get_the_id()作为一个基于循环的工具,在循环之外你会得到不可预测的结果。

希望有所帮助,我喜欢在WP工作,我希望你这样做。