wordpress外掛開發01-原理講解

huangbangqing12發表於2018-07-08

這節課,我們來學習wordpress外掛開發的原理。

如何讓wordpress認識一個外掛

wordpress中做外掛的方式和做主題開發的方式是非常類似的。就像我們做主題時必須要有index.php和style.css一樣。

wordpress外掛裡面也必須要編寫固定格式的程式碼才能夠被識別。

首先,我們來到本地的開發環境中,看下外掛目錄的位置:

必須登陸才能檢視隱藏內容

這裡實際上是有5個外掛,外掛有2種不同的形式,一種是直接以一個“檔案”的形式存在,就像上圖的“hello.php”,另外一種是以“資料夾”的形式存在,就像上圖的“akismet”。

為什麼會以資料夾存在呢?是因為有些外掛裡面的內容寫的非常複雜,有些外掛裡還包括樣式和圖片,所以需要以資料夾的形式呈現。而有些外掛很簡單,一個檔案就能夠實現外掛的功能。

以上就是外掛存放的位置以及2種不同的形式。

那到底怎樣才能讓wordpress認識一個外掛呢?

我們看看官網是如何解釋的:wordpress官方文件

名字,檔案和位置

名字

首先你需要想好這個外掛是用來做什麼的,然後你就可以為它起一個獨一無二的名字。如果你不確定這個名字是否被使用過,你可以通過Google或者其他的方式來搜尋一下。大多數外掛開發者為外掛起的名字都能很直觀地描述它的功能,例如,一個與天氣有關的外掛的名字中就應當包含“天氣”兩個字。外掛的名字可以由多個字片語成。

檔案

下一步就是根據你外掛的名字,建立一個PHP主檔案。舉個例子,如果外掛的名字叫做 "Fabulous Functionality",那麼PHP主檔案的名字就可以是 <tt>"functionality.php"</tt>,當然,還要注意重名的問題。因為使用者在安裝你的外掛的時候,會預設把你的外掛安裝到一個叫<tt>wp-content/plugins/</tt>的目錄下,如果兩個外掛的檔名衝突了,那就杯具了。

你的外掛中至少應當包含一個PHP主檔案(當然你也可以把它拆分成多個檔案),還可以包含Javascript檔案、CSS檔案、圖片檔案以及語言檔案等。如果你的外掛中包含多個檔案,你還需要建立一個資料夾,並把外掛包含的所有檔案放到這個資料夾中,這樣你只要讓其他人把整個資料夾放到<tt>wp-content/plugins/</tt>目錄下就可以了。外掛資料夾的名稱通常和外掛PHP檔案的名稱相同,例如PHP檔案的名稱叫做functionality.php的話,資料夾的名稱就可以叫做functionality。

需要注意的是,由於在WordPress中可以配置<tt>wp-content/plugins/</tt>目錄的位置,所以你必須使用plugin_dir_path()和plugins_url()兩個函式來獲取外掛的路徑。

外掛如何被認識:

檔案頭

現在開始吧,首先讓我們向PHP主檔案中加入一些資訊

標準外掛資訊

外掛的主檔案頂部必須包括一個標準外掛資訊頭。WordPress通過標準資訊頭識別外掛的存在,並把它加入到控制皮膚的外掛管理頁面,這樣外掛才能啟用,載入外掛,並執行裡面的函式;如果沒有資訊頭,外掛將無法啟用和使用。標準資訊外掛頭的格式為:

<pre><?php
/*
Plugin Name: 外掛名稱
Plugin URI: http://URI_Of_Page_Describing_Plugin_and_Updates
Description: 外掛的簡單描述
Version: 外掛版本號, 例如: 1.0
Author: 外掛作者
Author URI: http://URI_Of_The_Plugin_Author作者地址
*/
?>
</pre>

標準資訊頭至少要包括外掛名稱,這樣WordPress才能識別你的外掛。其他資訊將顯示在控制皮膚外掛管理頁面中。標準外掛資訊對各行順序沒有要求。

這就是讓wordpress認識一個外掛的方法。

官方開發外掛的文件

在我們開啟的這個官方文件中,詳細介紹了外掛開發知識和連結,你都可以不斷的去深入,點選這些連結去找到對應的內容。

這裡提供三個連結供大家參考學習:

外掛 API

這裡主要講解外掛開發的原理,外掛是如何執行的。

這裡涉及到外掛的動作(Action),過濾器(Filter)。

我們所有的外掛開發都是基於這兩個“執行掛鉤的機制”來進行操作的。

關於動作(Action),過濾器(Filter)我會在後面和大家詳細的解釋。

這裡當然也有詳細的介紹,大家有興趣的話可以深入的瞭解。

你可以看到:

目前提供的動作類鉤子

參看 Plugin API/Action Reference 以查詢WordPress目前提供的動作類掛鉤列表

目前為過濾器提供的鉤子

參看 Plugin API/Filter Reference 查詢目前為WordPress過濾器提供的鉤子, 以及過去版本WordPress鉤子的連結。

以上是兩個“掛鉤的機制”對應的標籤。

如何真正的實現一個外掛

回到外掛資料夾,在這裡我已經準備好了一個叫做“plugin_1.php”:plugin_1

開啟它,可以看到,最外面是php程式碼,接下來是外掛的標識程式碼,只有寫上這些資訊才能被wordpress所識別/

<?php
/*
Plugin Name: 我的第一個外掛
Plugin URI: http://www.xuhss.com
Version:V1.01
Author: MrBang
Author URI:http:// www.xuhss.com
Description:這是我開發的第一個WP外掛哦

*/
function showName(){
    echo "選單<br/>";
    echo date('Y-m-d h:m:s');
    echo "外掛原理";
}

//add_action('adminmenu','showName');
//add_filter('adminmenu','showName');
?>

把這個檔案放到wordpress的外掛目錄下,然後來到wordpress後臺-外掛-已安裝外掛:

[mem]

[/mem]

我們可以看到“外掛的名稱”“描述”“作者”“外掛主頁”。

這說明外掛識別成功,點選“啟用”

這個外掛是沒有任何功能實現的。相當於是一個空的外掛。

動作(Action),過濾器(Filter)的機制

接著,我們來學習:動作(Action),過濾器(Filter)的機制:

在這個外掛裡,我們只寫了一個函式,這個函式輸出了“選單”,“日期”,“外掛原理”。

function showName(){
    echo "選單<br/>";
    echo date('Y-m-d h:m:s');
    echo "外掛原理";
}

我們並沒有註釋掉這個函式,但是在外掛的頁面沒有任何的效果。

怎麼能夠看到這個函式的下效果呢?先去除action的註釋,儲存檔案。

add_action('adminmenu','showName');

然後,再來到wordpress的後臺外掛頁面,啟用外掛。

啟用之後,在管理員選單中輸出了一些文字:

[mem]

[/mem]

我們看一下這是什麼原理:

首先定義了一個叫做showName的函式。函式裡分別輸出了3句話。那麼怎麼樣讓這個函式執行呢?

在這裡就使用了Action機制,Action的第一個引數是“adminmenu”,這個引數是wordpress預先提供的。到Action或Filter的文件中可以找到。

它是wordpress已經提供好的內容。

所以Action機制確定函式執行的時機。你現在某個動作發生的時候,執行你定義的操作,這時,就使用Action機制/

我們註釋Action,開啟Filter:

add_filter('adminmenu','showName');

來到網站後臺,可以看到同樣的結果。

那Filter的原理是什麼呢?前面的Action的原理是執行動作的時候呼叫函式,Filter是呼叫這些內容之前做的處理,在你呼叫adminmenu之前,執行這個函式,然後再和adminmenu一起輸出,它是在之前做的處理,而Action是在動作的過程中做的處理。

根據你想實現的功能來採用不同的機制,那麼這就是外掛的原理介紹和文件介紹。

相關文章