2009-12-03 50 views
2

特别在主题php文件中,比如说index.php。大多数主题的index.php文件中的第一件事是调用get_header(),这肯定不是在index.php中定义的,所以它如何知道该函数?WordPress如何知道它的功能?

我对php并不是很熟悉,但是从我刚刚阅读的内容中可以看出,include和require关键字的工作方式与C中包含的 import in Java or 差不多相同,我理解并且有意义。然而,在这个特定的index.php文件中这些关键字的唯一用法是包含一个不包含get_header()定义的文件,它也没有任何包含或需要它自己的东西(尽管它调用了一些更多的函数没有权利知道,很像索引),所以很清楚,现在它是如何知道这个功能的。

无论如何,我只是希望从wordpress中为我自己删除一些'魔术'。提前致谢!

回答

4

主题index.php文件不是唯一的处理的主文件,一个驻留在你的WordPress安装的根目录。它调用几个文件来设置环境,然后加载模板。您可能需要查看wp-content/plugins目录,或许从globals.php文件开始调整一些魔法。

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

+0

谢谢!正是我在寻找的那种答案:) – Trajanus 2009-12-03 19:42:04

1

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

你必须明白的是,PHP 包括需要函数的行为就像一个在线包括。它简单地将包含文件视为原始脚本的一部分..一个大的连接脚本(所以不是真的像在Java中使用导入

您可能希望从.htaccess文件开始,它会告诉您哪个.php文件被分配来处理请求。根据你在你的问题中所说的内容,它可能不是index.php。当你发现最上面的PHP脚本,你可以从那里您的工作方式与包括 S和需要 ..

+0

哎呦的load_template函数调用,你是它不是类似于Java导入正确的,感谢指出了这一点! – Trajanus 2009-12-03 19:42:49

0
在C

,并在Java中声明你的文件的顶部导入。在PHP中,你可以设置包括几乎任何你想要的。

所以这是有效的:

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

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

如果你想离开了<?php get_header(); ?>那么就不会有问题

2

具体在主题php文件,如说index.php。大多数主题的index.php文件中的第一件事是调用get_header(),这肯定不是在index.php中定义的,所以它如何知道该函数?

主题的index.php文件从不自行执行。 所有请求WordPress安装通过WordPress的主要index.php文件。

5

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

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

模板文件被加载由require_once功能wp-includes/theme.php