WordPress 插件開發(fā)入門指南:使用 WordPress 插件樣板
WordPress 插件開發(fā)的學(xué)習(xí)曲線較低,并沒有構(gòu)建插件的唯一方法。插件可以像 Hello Dolly 一樣簡(jiǎn)單,只是一個(gè)單文件;也可以根據(jù)各種需求和功能構(gòu)建得非常復(fù)雜。WordPress 插件樣板旨在提供一個(gè)標(biāo)準(zhǔn)化、高質(zhì)量的基礎(chǔ),幫助您構(gòu)建下一個(gè)優(yōu)秀的插件。在本系列的第一部分中,我們將深入探討該樣板,包括文件和文件夾的結(jié)構(gòu)以及樣板的代碼組織。
關(guān)鍵要點(diǎn)
- WordPress 插件樣板為構(gòu)建 WordPress 插件提供了標(biāo)準(zhǔn)化、高質(zhì)量的基礎(chǔ),學(xué)習(xí)曲線低,并且可以靈活地用于簡(jiǎn)單或復(fù)雜的插件結(jié)構(gòu)。
- 樣板的 3.0.0 版本在代碼組織和插件內(nèi)部關(guān)注點(diǎn)的分離方面帶來了重大改進(jìn),可以通過克隆 git 倉庫或從 GitHub 倉庫下載 zip 文件輕松獲取。
- 樣板遵循推薦的 WordPress 編碼和文檔標(biāo)準(zhǔn),提供有用的入門指南和工具推薦,并包含五個(gè)用于各種功能的默認(rèn)類,使其成為插件開發(fā)人員的絕佳起點(diǎn)。
背景
WordPress 插件樣板最初是由 Tom McFarlin 發(fā)起的,旨在提供一種標(biāo)準(zhǔn)化的面向?qū)ο蠓椒▉順?gòu)建 WordPress 插件。由于樣板構(gòu)建在插件 API 之上,并遵循 WordPress 推薦的編碼標(biāo)準(zhǔn)和文檔標(biāo)準(zhǔn),因此您可以確信自己處于安全可靠的環(huán)境中。樣板最近更新到 3.0.0 版本,在代碼組織以及插件內(nèi)部關(guān)注點(diǎn)的進(jìn)一步分離方面帶來了重大改進(jìn)。如果您已經(jīng)熟悉使用舊版樣板 (v2.6.2) 開發(fā)插件,則可能需要一些時(shí)間來重新學(xué)習(xí)最新版本中的新增內(nèi)容,其中包括新的文件夾結(jié)構(gòu)。此樣板不再由 Tom McFarlin 本人維護(hù)(在撰寫本文時(shí)),他已經(jīng)將接力棒傳給了 Devin Vinson。開發(fā)仍在按計(jì)劃繼續(xù)進(jìn)行,因此如果您有任何問題,請(qǐng)隨時(shí)在 GitHub 倉庫中報(bào)告。我們也歡迎您的貢獻(xiàn)。
獲取樣板副本
獲取 WordPress 插件樣板副本最簡(jiǎn)單的方法是克隆 git 倉庫本身。
<code>git clone https://github.com/DevinVinson/WordPress-Plugin-Boilerplate.git</code>
或者您可以始終從 GitHub 倉庫下載 zip 文件。由于 3.0.0 版本已發(fā)布,因此不能簡(jiǎn)單地將插件直接復(fù)制到您的 wp-content/plugins 目錄中。這是因?yàn)椴寮膶?shí)際源代碼不包含在根目錄中,而實(shí)際上位于名為 trunk 的子目錄中?,F(xiàn)在不用擔(dān)心這個(gè)問題,我們稍后將在本文中討論新的文件夾結(jié)構(gòu)。README.md 文件中詳細(xì)介紹了如何正確安裝樣板的完整說明。簡(jiǎn)而言之,您可以:
- 將 trunk 目錄復(fù)制到 wp-content/plugins 文件夾
- 復(fù)制整個(gè)樣板目錄,然后為 trunk 子目錄創(chuàng)建到 wp-content/plugins/
/ 的符號(hào)鏈接。創(chuàng)建符號(hào)鏈接將取決于您使用的操作系統(tǒng)。
完成此操作后,您現(xiàn)在應(yīng)該在管理面板的插件列表中找到一個(gè)名為 WordPress Plugin Boilerplate 的插件,假設(shè)您沒有對(duì)樣板本身進(jìn)行任何修改。只需激活插件即可開始使用!
使用在線生成器自定義插件
激活后,您將擁有一個(gè)基本上不執(zhí)行任何操作的“普通”插件——至少目前是這樣。您還需要對(duì)整個(gè)樣板的代碼庫運(yùn)行搜索和替換操作,此過程可能非常繁瑣且耗時(shí)。幸運(yùn)的是,Enrique Chavez 創(chuàng)建了一個(gè)非官方生成器,可以自動(dòng)化此過程。只需訪問 http://m.miracleart.cn/link/6340831392e9cd8af9598274f4b3c5c0 并填寫頁面底部的表單即可生成個(gè)性化的 WordPress 插件樣板副本。
文件夾結(jié)構(gòu)
讓我們更仔細(xì)地看看與舊版本相比,WordPress 插件樣板 3.0.0 版本是如何組織的。如前所述,實(shí)際的插件代碼包含在一個(gè)名為 trunk 的子目錄中,而不是根目錄中。這是為了遵循 WordPress 官方插件存儲(chǔ)庫中使用的標(biāo)準(zhǔn),該存儲(chǔ)庫包含三個(gè)主要目錄:assets、branches 和 trunk。樣板已經(jīng)提供了其中的兩個(gè):assets 和 trunk。以下是樣板中包含的完整目錄和文件(在撰寫本文時(shí)):
<code>git clone https://github.com/DevinVinson/WordPress-Plugin-Boilerplate.git</code>
以下是每個(gè)文件和文件夾的功能簡(jiǎn)要說明:
-
.gitignore
:為大多數(shù)不應(yīng)存在于 git 存儲(chǔ)庫中的內(nèi)容提供合理的默認(rèn).gitignore
。 -
CHANGELOG.md
:樣板更改的標(biāo)準(zhǔn)變更日志,包含更改日期。 -
README.md
:一個(gè)有用的入門指南,其中列出了安裝說明,以及其他一些部分,例如工具推薦和鳴謝。 -
assets
:此目錄包含在您決定將插件發(fā)布到 WordPress 插件存儲(chǔ)庫時(shí)需要提供的推薦資源。此目錄中包含的所有圖像均為發(fā)布的推薦分辨率。 -
trunk
:這是您將要開發(fā)的實(shí)際插件。有一些文件夾將代碼庫分為管理和面向公眾的功能。我們將詳細(xì)介紹每個(gè)子目錄的含義。-
admin
:admin
目錄中包含三個(gè)目錄,即css
、js
和partials
。顧名思義,所有面向管理的功能都應(yīng)放在此處。默認(rèn)情況下,plugin-name-admin.js
和plugin-name-admin.css
將添加到您的 wp-admin 中。class-plugin-name-admin.php
將提供通用功能,您可以在其中定義特定于管理的掛鉤。 -
public
:此目錄與admin
目錄提供的功能非常相似,唯一的區(qū)別是public
目錄應(yīng)用于存儲(chǔ)所有面向公眾的功能代碼庫。 -
languages
:一個(gè)起始.pot
文件,您可以在其中為插件提供翻譯功能。 -
includes
:這可能是幾乎所有神奇之處發(fā)生的地方。默認(rèn)情況下包含五個(gè)起始類,我們將在下一節(jié)中討論。 -
LICENSE.txt
:默認(rèn)情況下包含 GPL v2 許可證的副本。 -
README.txt
:插件 README 文件的起點(diǎn)。此文件涵蓋了您可以進(jìn)一步填寫以在 WordPress 插件存儲(chǔ)庫中提供良好的插件頁面的所有部分。 -
plugin-name.php
:插件的入口點(diǎn)。在此處,包含一個(gè)通用的插件文件頭,您可以根據(jù)自己的喜好進(jìn)行修改。如果您需要在插件激活和/或停用時(shí)包含某種功能,則還會(huì)在此文件中注冊(cè)register_activation_hook
和register_deactivation_hook
。
-
包含的類
如前所述,trunk/includes
目錄中提供了五個(gè)默認(rèn)類。讓我們看看每個(gè)類都做什么:
-
class-plugin-name-activator.php
:此類在插件激活期間實(shí)例化。它只有一個(gè)靜態(tài)方法activate()
,該方法注冊(cè)到register_activation_hook
。每當(dāng)您需要在插件激活時(shí)執(zhí)行某些操作(例如創(chuàng)建自定義表或保存默認(rèn)選項(xiàng))時(shí),請(qǐng)使用此類。 -
class-plugin-name-deactivator.php
:class-plugin-name-deactivator.php
的對(duì)應(yīng)類。它也只有一個(gè)靜態(tài)方法deactivate()
,可用于在插件停用期間運(yùn)行任何功能。 -
class-plugin-name-i18n.php
:插件 i18n 功能的起點(diǎn)。它有一個(gè)屬性$domain
,用于存儲(chǔ)插件文本域??梢允褂霉卜椒?set_domain()
設(shè)置此屬性。最后,每當(dāng)加載插件時(shí),都會(huì)調(diào)用此類中的load_plugin_textdomain()
方法。 -
class-plugin-name-loader.php
:樣板中可能最重要的類。它包含兩個(gè)屬性$actions
和$filters
,所有在插件中注冊(cè)的掛鉤都將存儲(chǔ)在此處。它提供兩個(gè)簡(jiǎn)單的包裝函數(shù)add_action()
和add_filter()
,用于將操作或過濾器添加到$actions
和$filters
屬性中。這不要與 WordPress 默認(rèn)的add_action()
和add_filter()
函數(shù)混淆,因?yàn)榇祟悓?shí)際上并沒有直接注冊(cè)它們。所有掛鉤都只會(huì)在另一個(gè)名為run()
的方法期間注冊(cè)。 -
class-plugin-name.php
:將所有部分粘合在一起的類。它包含有關(guān)插件的重要信息,例如插件名稱和版本。此外,它將使用load_dependencies()
方法加載依賴項(xiàng),這將包含以上四個(gè)類,并且將使用set_locale()
方法設(shè)置插件文本域。之前注冊(cè)的所有管理和公共掛鉤也可以在此處定義。此類還提供簡(jiǎn)單的 get 方法,例如get_plugin_name()
用于返回插件名稱,get_version()
用于返回當(dāng)前插件版本,以及get_loader()
用于保留class-plugin-name-loader.php
的實(shí)例。
結(jié)論
簡(jiǎn)而言之,WordPress 插件樣板為插件開發(fā)人員提供了一個(gè)絕佳的起點(diǎn)。它遵循推薦的 WordPress 編碼標(biāo)準(zhǔn)以及 WordPress 文檔標(biāo)準(zhǔn),因此您知道自己從一開始就走在了正確的道路上。此外,由于樣板已經(jīng)提供了您所需的大部分內(nèi)容,因此發(fā)布到 WordPress 插件存儲(chǔ)庫變得更加容易。一旦我們熟悉了代碼組織和文件夾結(jié)構(gòu),我們將在本系列的第二部分中探討如何使用 WordPress 插件樣板開發(fā)實(shí)際插件。
以上是使用WordPress插件樣板加快開發(fā)的詳細(xì)內(nèi)容。更多信息請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

熱AI工具

Undress AI Tool
免費(fèi)脫衣服圖片

Undresser.AI Undress
人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover
用于從照片中去除衣服的在線人工智能工具。

Clothoff.io
AI脫衣機(jī)

Video Face Swap
使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費(fèi)的代碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級(jí)代碼編輯軟件(SublimeText3)

使用Git管理WordPress項(xiàng)目時(shí),應(yīng)只將主題、自定義插件和配置文件納入版本控制;設(shè)置.gitignore文件以忽略上傳目錄、緩存和敏感配置;利用webhook或CI工具實(shí)現(xiàn)自動(dòng)部署并注意數(shù)據(jù)庫處理;采用兩分支策略(main/develop)進(jìn)行協(xié)作開發(fā)。這樣做可避免沖突、保障安全,并提升協(xié)作與部署效率。

使用WordPress測(cè)試環(huán)境是為了確保新功能、插件或主題在正式上線前的安全性和兼容性,避免影響真實(shí)網(wǎng)站。搭建測(cè)試環(huán)境的步驟包括:下載安裝本地服務(wù)器軟件(如LocalWP、XAMPP),創(chuàng)建站點(diǎn)、設(shè)置數(shù)據(jù)庫和管理員賬號(hào),安裝主題和插件進(jìn)行測(cè)試;復(fù)制正式網(wǎng)站到測(cè)試環(huán)境的方法是通過插件導(dǎo)出站點(diǎn)、導(dǎo)入測(cè)試環(huán)境并替換域名;使用時(shí)應(yīng)注意不使用真實(shí)用戶數(shù)據(jù)、定期清理無用數(shù)據(jù)、備份測(cè)試狀態(tài)、適時(shí)重置環(huán)境,并統(tǒng)一團(tuán)隊(duì)配置以減少差異問題。

創(chuàng)建Gutenberg塊的關(guān)鍵在于理解其基本結(jié)構(gòu)并正確連接前后端資源。1.準(zhǔn)備開發(fā)環(huán)境:安裝本地WordPress、Node.js和@wordpress/scripts;2.使用PHP注冊(cè)塊并用JavaScript定義塊的編輯和顯示邏輯;3.通過npm構(gòu)建JS文件以使更改生效;4.遇到問題時(shí)檢查路徑、圖標(biāo)是否正確或使用實(shí)時(shí)監(jiān)聽構(gòu)建避免重復(fù)手動(dòng)編譯。按照這些步驟,可以逐步實(shí)現(xiàn)一個(gè)簡(jiǎn)單的Gutenberg塊。

在WordPress中,當(dāng)新增自定義文章類型或修改固定鏈接結(jié)構(gòu)后,需手動(dòng)刷新重寫規(guī)則,此時(shí)可通過代碼調(diào)用flush_rewrite_rules()函數(shù)實(shí)現(xiàn)。1.可在主題或插件激活鉤子中添加該函數(shù)以自動(dòng)刷新;2.僅在必要時(shí)執(zhí)行一次,如添加CPT、分類法或修改鏈接結(jié)構(gòu)后;3.避免頻繁調(diào)用以免影響性能;4.多站點(diǎn)環(huán)境下需視情況為每個(gè)站點(diǎn)單獨(dú)刷新;5.某些托管環(huán)境可能限制規(guī)則保存。此外,訪問“設(shè)置>固定鏈接”頁面點(diǎn)擊保存也可觸發(fā)刷新,適合非自動(dòng)化場(chǎng)景。

tosetupredirectsinwordpressingthe.htaccessfile,locateThEfileInyourSite'sRootDirectorectoryAndDrectRectrulesabovethe#beginWordPresssection.forbasic301redirects,USETHEETHEETERECTREFTATRECTATREDERTREFTATREDERTREFTATRECTRECTATRECTRECTATREDECT301/OLD-PAGEHTTPS:

要實(shí)現(xiàn)響應(yīng)式WordPress主題設(shè)計(jì),首先要使用HTML5和移動(dòng)優(yōu)先的Meta標(biāo)簽,在header.php中添加viewport設(shè)置以確保移動(dòng)端正確顯示,并用HTML5結(jié)構(gòu)標(biāo)簽組織布局;其次,利用CSS媒體查詢實(shí)現(xiàn)不同屏幕寬度下的樣式適配,按移動(dòng)優(yōu)先原則編寫樣式,常用斷點(diǎn)包括480px、768px和1024px;第三,彈性處理圖片和布局,為圖片設(shè)置max-width:100%并使用Flexbox或Grid布局替代固定寬度;最后,通過瀏覽器開發(fā)者工具和真實(shí)設(shè)備進(jìn)行充分測(cè)試,優(yōu)化加載性能,確保響應(yīng)

UsingsMtpForWordPresseMailSimProvesDeliverabilitialComparedComparedTothEdeDefaultPhpMail()函數(shù).1.smtpauthenticateswithyouremailserver.2.somemomehostsdisablesablephpmail()

TOINTEGRATETHIRD-PARTYAPISINTOWORDPRESS,關(guān)注臺(tái)詞:1.SelectAutableabepianDobtainCredentialslikeapikeYsoroAuthtoKensByEnterRegisteringThemSecure.2.ChooseBeteBetB??eteBetB??eteBetB??etebetInpliCityOorcustimplicityOrcustomPliCoseTompliCoseTomploomcoseusionfunctionfunctionfunctibunitiacuciencipuity forfunigation。
