wordpress如何知道它的功能?

时间:2009-12-03 18:50:39

标签: php wordpress

特别是在主题php文件中,比如说index.php。在大多数主题的index.php文件中,第一件事就是调用get_header(),这在index.php中肯定没有定义,那么它如何知道该函数呢?

我对php不太熟悉,但从我刚才读到的内容中有一个include和require关键字的工作方式与C中的import in Java or 包含的工作方式大致相同,我理解并且有道理。但是,这个特定index.php文件中这些关键字的唯一用法包括一个不包含get_header()定义的文件,它也没有自己的任何包含或要求(尽管它确实调用了更多的函数)没有权利知道,就像索引一样,很清楚现在它是如何知道这个功能的。

无论如何,我只是希望自己从wordpress中删除一些“魔法”。提前谢谢!

5 个答案:

答案 0 :(得分:5)

每个主题中的index.php都不会直接调用,而是由Wordpress中的其他文件包含。

get_header实际上是在wp-includes/general-template.php中定义的。

模板文件由require_once load_template函数wp-includes/theme.php函数调用加载{{1}}

答案 1 :(得分:4)

主题的index.php文件不是已处理的主文件,它位于wordpress安装的根目录中。它调用几个文件来设置环境,然后加载模板。您可能希望查看wp-content/plugins目录,可能从globals.php文件开始调整一些魔法。

wp-includes目录也包含有趣的文件,get_header()函数在该目录的general-template.php中定义。

答案 2 :(得分:2)

  

特别是在主题php文件中,比如说index.php。在大多数主题的index.php文件中,第一件事就是调用get_header(),这在index.php中肯定没有定义,那么它如何知道该函数呢?

主题的index.php文件永远不会自行执行。 对WordPress安装的所有请求都会通过主WordPress index.php文件。

答案 3 :(得分:1)

最有可能的是,index.php被包含在另一个文件中,该文件定义了get_header()函数,或者 - 更可能 - 包含另一个包含的php文件,该文件又定义了get_header()函数。

您必须了解php include require 函数的行为类似于内联包含。它只是将include文件视为原始脚本的一部分..一个大的连接脚本(所以不像Java中的 import

您可能希望从.htaccess文件开始,该文件将告诉您分配了哪个.php文件来处理请求。根据您在问题中所说的内容,它可能不是index.php。当您找到最顶级的PHP脚本时,您可以使用 include 需要来完成工作。

答案 4 :(得分:0)

在c和java中,您声明了文件顶部的导入。在php中,你可以设置包含几乎任何你想要的软件。

所以这是有效的:

<?php 
// define some functions
?>
<html>
<head>
<?php
include('head.php');
?>
</head>
<body></body></html>

在包含index.php页面之前,可能会在某处声明这些get_header()方法。

如果你想省略<?php get_header(); ?>那么就没有问题了