Why declare $post globally?

时间:2014-09-15 作者:saricDen

我是Wordpress开发的新手,到处都可以看到这样的示例,其中有一行代码可以通过以下方式显式声明$post变量:

global $post;
但我已经在没有这条线的情况下测试了我的使用,并且没有明显的区别。

为什么要显式声明$post?

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

在教程(示例1)中,他必须声明全局$post,以便可以从中访问post\\u父级。在这样的函数中,除非他这样做,否则$post不是全局变量。

在codex(示例2)中,它被声明为全局的,因为示例代码只是一个示例,显式地试图告诉您$post变量是全局变量。

现在,虽然主题模板是以这样一种方式包含的,即它们在全局变量空间中运行(它们是从主执行线程中包含的,而不是从函数中包含的),但其他代码可能不是这样。因此,在模板的主体中,不需要指定global $post, 但在函数中,你会。

还要了解WordPress面向所有技能水平的程序员。当你的目标仅仅是改变你的主题、网站或类似的东西时,你不需要成为一名程序员就可以完成任务。随着时间的推移,WordPress从一段基本的过程性代码演变为更加面向对象和基于API的代码。所以在代码库中有这样的遗迹。如果您从头开始设计一个新系统,您可能会出于各种原因避免完全使用全局变量。WordPress中包含了很多用于向后兼容性等方面的代码,当“新”程序员将一小段代码复制到由于变量作用域而无法工作的地方时,他们可能会感到困惑。因此,将事物声明为全局显式避免了问题,并通过声明所讨论的变量在全局范围内,使代码更加清晰。

而且,我不得不说,文档和教程中的代码示例是为了阅读和理解,而不是复制和粘贴。但不管怎样,人们都会复制和粘贴它们。最好不要复制代码,而是了解它告诉您的内容,然后从头开始编写自己的版本,这正是您想要做的。

SO网友:Pieter Goosen

这个$post 全局变量由设置$wp_query->the_post() (WP_Post) 在循环内部,并且在循环期间可以访问。$post 保存当前帖子中的帖子数据。

当你是inside 循环,您不需要调用$post 全局,因为它已经可以访问。当你是outside 循环,并且您需要访问post数据,您需要使用$post global以使post数据可用。

结束

相关推荐

Wp.getPosts,状态=‘trash’,使用node.js

我想知道如何设置wp的过滤器选项。获取帖子。我想获得状态为“垃圾”的帖子。筛选器当前为空,并返回除垃圾以外的所有帖子。我正在使用xmlrpc wordpress api和节点wordpress插件。https://github.com/scottgonzalez/node-wordpress这是我当前的代码:wp.getPosts(\'<filter>\', [\'title\',\'status\'], function(err, data){ }); 我不确定过