PHP如何知道WordPress函数?

3

我是一名网站开发新手,现在正在探索wordpress模板。它们都有类似的结构。但我注意到了一个让我感兴趣的有趣的事情。
在php模板文件中有函数调用,比如get_header(),get_footer()。但我不明白PHP解释器是如何知道这些函数的存在的,因为没有任何的includes或requires……
这是如何工作的,请解释一下。我会非常感激任何帮助。

5个回答

3
请查看WordPress文件夹中以index.php开头的文件,这是第一个被加载的文件。你会看到"require( dirname( __FILE__ ) . '/wp-blog-header.php' );",这只是开始。
因此,回答你的问题,WordPress使用"require"来包含文件。

我猜我应该添加这行代码,或者它在WordPress安装时自动添加,我一直在探索裸模板,没有安装,所以我找不到这个require声明。我是对的吗? - user4510167
这一切都是自动的。您不应该需要添加这些行。WordPress会在特定文件夹中搜索某些文件,并在需要时自动添加它们。 - Gavin Simpson
因此,从互联网下载的裸模板没有这一行,但是当通过管理面板安装模板时,WordPress会自动将require行添加为index.php的第一行,对吗? - user4510167
不需要。我编辑了我的先前评论。WordPress只会搜索某些文件,例如自定义模板,并自动包含它们。模板文件在WordPress核心文件之后被包含,因此它们不需要在每个模板文件中都存在。 - Gavin Simpson


0

PHP模板文件本身被包含在某个地方。例如:

function get_header() { /* ... */ }
include("page.php");

0
get_header() 

这个函数在wp-includes/general-template.php中定义。

那么wp-includes/general-template.php是如何被包含的呢?

wp-settings.php requires wp-includes/general-template.php.
wp-config.php requires wp-settings.php.
wp-load.php requires wp-config.php.
wp-blog-header.php requires wp-load.php.
index.php requires wp-blog-header.php.

每个页面请求都是通过加载index.php开始的。
如果您使用Linux,可以使用grep查找文件的引用。例如:
grep -r "function get_header(" *

返回定义了 get_header() 函数的文件列表。


0
所有在WordPress主题中的函数都在模板加载之前在WordPress核心代码的其他位置声明过。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接