特别是在主题php文件中,比如说index.php。在大多数主题的index.php文件中,第一件事就是调用get_header(),这在index.php中肯定没有定义,那么它如何知道该函数呢?
我对php不太熟悉,但从我刚才读到的内容中有一个include和require关键字的工作方式与C中的import in Java or 包含的工作方式大致相同,我理解并且有道理。但是,这个特定index.php文件中这些关键字的唯一用法包括一个不包含get_header()定义的文件,它也没有自己的任何包含或要求(尽管它确实调用了更多的函数)没有权利知道,就像索引一样,很清楚现在它是如何知道这个功能的。
无论如何,我只是希望自己从wordpress中删除一些“魔法”。提前谢谢!
答案 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(); ?>
那么就没有问题了