开发者

How does wordpress know about its functions?

Specifically in theme php files, such as say index.php. The very first thing in most theme's index.php file is a call to get_header() which is most certai开发者_如何学运维nly not not defined in index.php, so how does it know about that function?

I'm not very familiar with php, but from what I've read just now there is an include and require keyword which work more or less the same way as an import in Java or include in C, which I understand and makes sense. However, the only usage of these keywords in this particular index.php file includes a file that doesn't contain a definition of get_header(), nor does it have any includes or requires of its own (though it does call some more functions it has no right to know about, much like index) so clearly that's now how it knows about this function.

Anyway, I was just hoping to remove some of the 'magic' from wordpress for myself. Thanks in advance!


The index.php in each theme isn't ever called directly, rather those are included by other files in Wordpress.

get_header is actually defined in wp-includes/general-template.php.

The templates files are loaded by require_once function calls in the load_template function of wp-includes/theme.php


Themes' index.php file is not the main file that's processed, that one resides in the root directory of your wordpress installation. It calls several files setting up the environment and then loads the template. You might want to look in the wp-content/plugins directory, maybe starting with the globals.php file to tweak some of the magic.

Also the wp-includes directory contains interesting files, the get_header() function is defined in general-template.php in that directory.


Specifically in theme php files, such as say index.php. The very first thing in most theme's index.php file is a call to get_header() which is most certainly not not defined in index.php, so how does it know about that function?

A theme's index.php file is never executed on its own. All requests to a WordPress install go through the main WordPress index.php file.


Most likely, index.php is being included in another file and that file either defines the get_header() function or - more likely - contains yet another included php file which in turns defines the get_header() function.

You have to understand that the php include and require functions behave like an in-line include. It simply treats the include file as being part of the original script.. a big concatenated script (so not really like an import in Java)

You may want to start at the .htaccess file which will tell you which .php file is assigned to handle the request. Based on what you said in your question, it will probably not be index.php. When you find the top-most php script, you can work your way from there with the includes and requires..


in c and in java you declare the import at the top of you files. In php you can set the includes almost anyware you want.

so this is valid:

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

it is possible that these get_header() methods are declared somewhere before the index.php page is included.

If you want to leave out the <?php get_header(); ?> then there will be no problem

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜