wordpress外掛開發01-原理講解
這節課,我們來學習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是在動作的過程中做的處理。
根據你想實現的功能來採用不同的機制,那麼這就是外掛的原理介紹和文件介紹。
相關文章
- 01-前端開發Vscode外掛配置前端VSCode
- wordpress外掛開發02-首頁文章自動摘要外掛開發
- wordpress外掛開發03-簡單的all in one seo 外掛開發
- WordPress 外掛
- babel原理及外掛開發Babel
- 寫個Markdown外掛,講講Chrome擴充套件開發Chrome套件
- 長沙WEB前端培訓講解:前端快速開發外掛emmetWeb前端
- 用Python分析WordPress官網所有外掛的開發者資訊Python
- 送命題:講一講Mybatis外掛的原理及如何實現?MyBatis
- 如何給Wordpress安裝外掛
- WordPress投稿外掛-DX-Contribute
- 通俗易懂的Gradle外掛講解Gradle
- WordPress 遷移外掛終極指南
- chrome 外掛開發Chrome
- flutter 外掛開發Flutter
- 開發Rhino外掛
- VscodeIDEA開發外掛VSCodeIdea
- Skywalking 外掛開發
- Webstorm 外掛開發WebORM
- Flutter外掛開發Flutter
- Mybatis外掛開發MyBatis
- ZBlog外掛開發檔案結構(外掛)
- apisix~lua外掛開發與外掛註冊API
- 雲主機使用WordPress 字型提速外掛
- 用Python分析5萬+個WordPress外掛Python
- WordPress問答外掛DW Question Answer分享
- 程式碼高亮WordPress外掛:Pure-HighlightjsJS
- WordPress入門02-安裝WordPress外掛的幾種方法
- WordPress入門04-如何管理已安裝的WordPress外掛
- Android外掛化原理(一)Activity外掛化Android
- dlopen開發外掛庫
- Chrome外掛開發教程Chrome
- eslint外掛開發教程EsLint
- Eclipse外掛開發demoEclipse
- Maven外掛開發教程Maven
- Idea日常開發外掛Idea
- VScode股票外掛開發VSCode
- babel 外掛開發案例Babel