pt古怪猴子娱乐游戏:wordpress源代碼研究-插件機制

独家真实传授pt古怪猴子玩法规律 www.cfrtc.icu 先前說過WP所有的處理都在index.php里,單入口。而這里面又分成了兩步。一個是數據的準備,第二是模板的加載。那我們的插件調用是在哪里 呢??可以這么說,插件需要的數據是在第一…

先前說過WP所有的處理都在index.php里,單入口。而這里面又分成了兩步。一個是數據的準備,第二是模板的加載。那我們的插件調用是在哪里 呢??可以這么說,插件需要的數據是在第一步準備好的,插件的調用機制也是在第一步初始化的,并且一部分的接口調用也是在第一步做了。然后第二部主要是就 是在特定的地方調用接口的方法。

其實所謂的插件,說白了就是一堆函數,寫插件的作者希望這一堆函數能在WP運行流程的一些地方插進去運行。比如我們希望一個關鍵詞過濾的東西,每遇 到“草泥馬”你換成“***”。那就可以寫一個插件,在每一次日志提交的時候,在入庫之前讓執行一個函數,讓這個$content中的“草泥馬”你換成 “***”。這就是插件。

那為什么我們不直接改源代碼就行了呢,反正是開源的。這個問題,我覺得原因有兩點。

1.開源沒錯,但是我為了一個小功能要看全部源代碼,是不是有點。。。

2.你改了源代碼你用,別人要用你再教他怎么怎么改。是不是有點。。。再如果對方不懂程序,OMG。

所以最好是寫成一個東西,傻瓜都會用的那種。這時候插件就出現了。

可能你還會想,那我寫一個執行腳本,讓他在指定的文件指定的行添加一些代碼,不也“插件”了嗎。

沒錯,這樣肯定也能成功。不過如果其它人也有其它的插件,大家都要改文件,那是不是可能出現沖突,不河蟹了是吧。

上面用插件的原因你了不了解都無所謂。下面要說的是插件的具體實現。

WP中用一種叫hook的機制實現了插件,hook:鉤子是也。也就是在指定的地方放一些鉤子,然后你可以把你的代碼寫成函數,掛在某些鉤子上,當程序執行到鉤子的時候,就把那上面的一串函數給執行了。

那這個掛的動作是什么時候發生的呢?是怎么發生的呢?

當我們在執行上面說的wp-settiongs.php的時候,里面包含了我們每個插件的一個引導文件(就是一個PHP文件),在這個文件里調用了 一些方法,比如:add_action(“鉤子”,”函數”)。比如apply_filter(“鉤子”,”函數”)..當然還有相應的刪除,修改什么的 一系列函數。你可以隨便打開一個插件的外層PHP文件看一下里面的這些代碼。

這些代碼什么意思呢。他們其實是描述了一個對應關系,就是一個鉤子對應一些函數的對應關系,每調用一次上面的掛鉤函數。就會讓這個鉤子上多關聯一個函數。其實這所有的信息就是存在PHP的關聯數組里的??梢韻胍幌率竊趺創嫻?,我這就不說了。是時候看看代碼了吧。呵呵。

然后這樣的一個全局變量被初始化了,在后面具體執行到一些鉤子的時候,函數就被執行了。具體就是這樣實現的。不神奇是吧。只是確實很管用。

不好地的方就是每次干什么事都會做這種初始化,不管你用不用得到。他都會被準備好。

所以WP才這么慢。有興趣的朋友可以試著var_dump一下PHP的$GLOBALS,數據量那是相當相當相當驚人,如果機器不太好的話,可能會讓你的瀏覽器卡死。

為您推薦

返回頂部