在教程(示例1)中,他必须声明全局$post,以便可以从中访问post\\u父级。在这样的函数中,除非他这样做,否则$post不是全局变量。
在codex(示例2)中,它被声明为全局的,因为示例代码只是一个示例,显式地试图告诉您$post变量是全局变量。
现在,虽然主题模板是以这样一种方式包含的,即它们在全局变量空间中运行(它们是从主执行线程中包含的,而不是从函数中包含的),但其他代码可能不是这样。因此,在模板的主体中,不需要指定global $post
, 但在函数中,你会。
还要了解WordPress面向所有技能水平的程序员。当你的目标仅仅是改变你的主题、网站或类似的东西时,你不需要成为一名程序员就可以完成任务。随着时间的推移,WordPress从一段基本的过程性代码演变为更加面向对象和基于API的代码。所以在代码库中有这样的遗迹。如果您从头开始设计一个新系统,您可能会出于各种原因避免完全使用全局变量。WordPress中包含了很多用于向后兼容性等方面的代码,当“新”程序员将一小段代码复制到由于变量作用域而无法工作的地方时,他们可能会感到困惑。因此,将事物声明为全局显式避免了问题,并通过声明所讨论的变量在全局范围内,使代码更加清晰。
而且,我不得不说,文档和教程中的代码示例是为了阅读和理解,而不是复制和粘贴。但不管怎样,人们都会复制和粘贴它们。最好不要复制代码,而是了解它告诉您的内容,然后从头开始编写自己的版本,这正是您想要做的。