【发布时间】:2015-02-01 21:57:05
【问题描述】:
我是网络开发的新手。我现在正在发现 wordpress 模板。它们都有相似的结构。但我注意到一件对我来说很有趣的事情。
php模板文件中有函数调用。喜欢get_header(), get_footer()。但我不明白 PHP 解释器是如何知道这个函数的,没有任何包含,需要....
这是如何工作的,请解释一下。如果有任何帮助,我将不胜感激。
【问题讨论】:
我是网络开发的新手。我现在正在发现 wordpress 模板。它们都有相似的结构。但我注意到一件对我来说很有趣的事情。
php模板文件中有函数调用。喜欢get_header(), get_footer()。但我不明白 PHP 解释器是如何知道这个函数的,没有任何包含,需要....
这是如何工作的,请解释一下。如果有任何帮助,我将不胜感激。
【问题讨论】:
查看 Wordpress 文件夹中以 index.php 开头的文件,这是第一个加载的文件。您将看到“require( dirname( __FILE__ ) . '/wp-blog-header.php' );”,而这仅仅是开始。
为了回答您的问题,wordpress 使用“require”来包含文件。
【讨论】:
阅读文档:
...
get_header()位于wp-includes/general-template.php。
来源:http://codex.wordpress.org/Function_Reference/get_header
...
get_footer()位于wp-includes/general-template.php。
来源:http://codex.wordpress.org/Function_Reference/get_footer
您可以通过WordPress Development 获得帮助。
【讨论】:
php 模板文件本身包含在某处。例如:
function get_header() { /* ... */ }
include("page.php");
【讨论】:
在加载模板之前,wordpress 主题中的所有函数都已在 Wordpress 核心代码的其他位置声明。
【讨论】:
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() 函数的文件列表。
【讨论】: