2009-12-03 51 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