搜尋
首頁後端開發php教程WordPress 樣板在外掛開發中的重要性

在過去的五到十年中,為網頁建立網站和應用程式已經變得比人們在 90 年代建立的許多東西複雜得多。使用大寫 HTML、基於表格的佈局和醜陋的 JavaScript 來手動創建網站以在頁面上製作某種類型的可愛動畫已經一去不復返了。

現在,我們擁有各種技術、框架和語言,所有這些技術、框架和語言都可以協同工作,幫助我們建立在瀏覽器中運行的完整軟體應用程式。

這是成為開發人員的美好時光。

由於我們可以使用的技術非常多,樣板檔案變得越來越流行。對於那些不熟悉的人來說,樣板文件基本上是基礎程式碼,可幫助開發人員快速啟動項目,而無需編寫所有網站和/或應用程式通用的程式碼或某些元件。

當然,它們可能會過度到比必要的更笨重和更複雜的程度,但所有好的都是為了奠定基礎- 即提供一種腳手架- 幫助你專注於寫作您的核心算法、代碼和函數對於您的專案和需求來說是獨一無二的。

一年多前,我開始研究兩個專案 - WordPress 外掛程式 Boilerplate 和 WordPress Widget Boilerplate - 每個專案都旨在為開發人員提供使用 WordPress 最佳實踐建立外掛程式的基礎。值得慶幸的是,這些計畫也收到了開源社群的許多其他貢獻,以幫助它們變得盡可能強大。

維護這些項目的一個方面是,我經常收到這樣的問題:為什麼我要這樣安排事情。因此,在這個由兩部分組成的系列中,我們將研究樣板文件、按照我的方式組織它們的原因(和優點),然後我們將使用這些樣板文件之一構建一個簡單的插件,以給出一個範例如何在您未來的專案中使用它們。


文件組織

建立任何軟體應用程式的關鍵組成部分之一(無論大小)是程式的組織方式。這不僅限於類別和/或函數的關聯方式(這是另一篇文章的主題),還包括文件的組織方式。

理想情況下,檔案不應簡單地轉儲到目錄中,然後留給其他開發人員進行篩選以維護專案。相反,它們應該在邏輯上組織在連貫的目錄中,命名清晰(而不是巧妙),並且應該要求任何為項目做出貢獻的開發人員花費很少的精力來了解某些文件的位置以及將他或她自己的添加內容放在哪裡。

WordPress 样板在插件开发中的重要性

這就像一句古老的格言:

一個放置所有東西的地方,並且所有東西都在它的位置上。

在創建這兩個樣板時,我不僅嘗試遵循這一特定原則,而且還嘗試從 Ruby on Rails 對其佈局進行建模的方式中汲取靈感。具體來說,他們更喜歡「約定優於配置」。

顯然,WordPress 不是 Rails,也不是 MVC 框架,我也不想讓它變成這樣。我只是想從其他開發者那裡借鑒好的想法,以便讓我們的生活在我們的環境中變得更輕鬆。

核心外掛程式檔案

無論您的外掛有多簡單或多複雜,它都必須至少包含一個 PHP 檔案。 該文件用作核心插件文件,其中包含賦予您的插件生命的所有程式碼、邏輯和功能。

如果您查看各種插件,您會發現開發人員有不同的做法:

  • 有些將所有內容包含在一個檔案中
  • 有些將相關功能分解為單獨的文件,並使用核心插件檔案來簡單地包含每個功能
  • 有些將一些前端程式碼與伺服器端程式碼分開

我並不是來證明為什麼這些方法(甚至提到的方法)比其他方法更好;只是為什麼樣板以這種方式佈局以及它如何為您工作。

WordPress 样板在插件开发中的重要性

基於 README 檔案的外掛主頁。

除了核心外掛程式檔案之外,WordPress 外掛程式還需要自述文件,以便為最終用戶提供有關如何使用外掛程式以及填充 WordPress 外掛程式儲存庫中的頁面的一些說明。

在最基本的層面上,這就是 WordPress 外掛所需的全部內容:核心外掛程式檔案和自述文件。您只需使用這兩個文件就可以建立一些非常複雜的插件;然而,它可能變得非常難以維護,特別是如果其他開發人員開始貢獻,這最終可能會導致意外的錯誤。

因此,我非常喜歡邏輯上分離程式碼的元件。

觀看次數

視圖是我從 MVC 模式借用的一個字(並且受到 Rails 的啟發)。

視圖可以定義為前端標記,為管理員和網站訪客在螢幕上呈現元素。

僅此而已。很容易,對吧?

當然,因為我們使用 PHP 工作,所以在整個程式碼中肯定會放置一些較小的 PHP 標籤,但視圖檔案的大部分應該是帶有類別和 ID 屬性的 HTML。

在樣板中,有兩個視圖:

  1. admin.php 是用於在管理儀表板中為使用者呈現元素的視圖
  2. widget.phpplugin.php 是用來為網站訪客呈現元素的視圖

當然,外掛可能沒有儀表板或網站訪客的視圖。在這種情況下,views 目錄將被刪除,並且負責將它們包含在核心插件檔案中的程式碼將被刪除。

樣式表

這是樣板檔案的一個微不足道的元件,因為任何進行任何類型前端開發的人都知道如何管理樣式表,並且可能有自己的組織它們的方法。

但為了保持一致,值得一提的是 css 目錄是保存所有樣式表的位置。這些文件也遵循與其關聯視圖相同的命名約定。

具體:

  1. admin.css 是用於在管理儀表板中為使用者設定元素樣式的視圖
  2. widget.cssplugin.css 是用於為網站訪客設定元素樣式的視圖

我曾考慮過為 LESS 或 SASS 引入目錄結構,但我認為這對於開發來說過於固執己見,而且這不是我希望樣板文件發展的方向。我寧願開發者選擇自己的風格並將其融入其中。

為此,我通常在自己的專案中組織樣式表的方式是在css 目錄中引入一個dev 目錄,然後引入一個admin .lessplugin.less 文件,然後編譯並縮小到根css 目錄中。

這繼續遵循組織樣板的做法,同時也允許我包含我的 LESS 檔案。

JavaScript

與樣式表一樣,JavaScript 檔案是樣板檔案的簡單元件,因為大多數使用 WordPress 並開發主題或外掛程式的人都使用過 JavaScript。

不幸的是,作為使用者和開發人員,在 WordPress 中使用 JavaScript 最令人沮喪的部分之一是開發人員通常不遵循最佳實踐。

一般來說,開發人員應始終執行以下操作:

  1. 使用與 WordPress 捆綁的 jQuery 版本
  2. 透過使用匿名函數存取 jQuery '$' 函數,避免與該函數發生衝突
  3. 不要將 jQuery 取消註冊為其他插件,主題可能正在使用它

話雖如此,樣板檔案(如樣式表和視圖)會以下列方式組織:

  1. admin.js 是用於管理管理儀表板中使用者元素行為的 JavaScript
  2. widget.jsplugin.js 是用來為訪客管理元素行為的 JavaScript

與樣式表一樣,開發人員也可以選擇在發佈外掛程式之前檢查和/或縮小其 JavaScript。為了避免對JavaScript 檔案的管理方式過於固執,樣板中不包含子目錄,但我經常在js 目錄中建立一個dev 目錄,以便按順序管理我預先檢查、預先縮小的JavaScript。

語言

建立外掛程式的一方面是確保使用其他語言的人可以存取和翻譯它們。為了盡可能簡單,樣板檔案還包含一個 lang 目錄和一個框架 plugin.po 檔案。

此文件旨在與 POEdit 結合使用,以便您完成開發後,可以輕鬆處理所有本地化字串。

圖像和其他資產怎麼樣?

除了樣式表和 JavaScript 檔案之外,樣板不提供任何用於管理其他資產(例如圖像)的目錄或約定。

同樣,這是一種平衡,既要努力避免過於固執己見,又要提供足夠的腳手架,讓開發人員開始專注於其核心功能。儘管並非每個插件都包含管理 CSS、JavaScript 或視圖,但它們比包含圖像和其他資源更為常見。

不過,所提供的約定規定您可以建立一個assets目錄、一個images目錄、一個icons目錄,或您將使用的任何其他類型的文件。


為什麼要麻煩?

WordPress 样板在插件开发中的重要性

WordPress 小部件樣板

那麼這一切有什麼意義呢?打開一個檔案並開始編寫所有程式碼不是很容易嗎?確實。但請記住,大部分開發工作是在產品發布之後進行的,如果您認真對待插件開發,那麼您就從事的是建立產品的業務。

因此,您需要以終為始。使用一致的方案來組織文件、命名文件等:

  • 從長遠來看簡化開發,以便您和貢獻的開發人員知道如何管理文件、在哪裡放置新文件以及在需要時在哪裡查找依賴項
  • 透過提供可以增強外掛程式的通用組織和模式,使維護變得更加容易
  • 提高了將專案擴展到第一個版本之後的能力,而無需在程式碼庫變得笨重時進行大量重構

最重要的是,鷹架應該使開發人員能夠輕鬆地開始處理其產品的核心業務邏輯,而不會妨礙他們。


結論

在本文中,我們回顧了樣板文件組織的“原因”,但我們實際上並沒有回顧樣板文件的“方式”,因此在下一篇文章中我們將僅討論這一點。

具體來說,我們將使用其中一個樣板檔案逐步建立一個插件,以便我們能夠確定取得樣板檔案副本並開始開發所需的典型步驟。

以上是WordPress 樣板在外掛開發中的重要性的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
哪些常見問題會導致PHP會話失敗?哪些常見問題會導致PHP會話失敗?Apr 25, 2025 am 12:16 AM

PHPSession失效的原因包括配置錯誤、Cookie問題和Session過期。 1.配置錯誤:檢查並設置正確的session.save_path。 2.Cookie問題:確保Cookie設置正確。 3.Session過期:調整session.gc_maxlifetime值以延長會話時間。

您如何在PHP中調試與會話相關的問題?您如何在PHP中調試與會話相關的問題?Apr 25, 2025 am 12:12 AM

在PHP中調試會話問題的方法包括:1.檢查會話是否正確啟動;2.驗證會話ID的傳遞;3.檢查會話數據的存儲和讀取;4.查看服務器配置。通過輸出會話ID和數據、查看會話文件內容等方法,可以有效診斷和解決會話相關的問題。

如果session_start()被多次調用會發生什麼?如果session_start()被多次調用會發生什麼?Apr 25, 2025 am 12:06 AM

多次調用session_start()會導致警告信息和可能的數據覆蓋。 1)PHP會發出警告,提示session已啟動。 2)可能導致session數據意外覆蓋。 3)使用session_status()檢查session狀態,避免重複調用。

您如何在PHP中配置會話壽命?您如何在PHP中配置會話壽命?Apr 25, 2025 am 12:05 AM

在PHP中配置會話生命週期可以通過設置session.gc_maxlifetime和session.cookie_lifetime來實現。 1)session.gc_maxlifetime控制服務器端會話數據的存活時間,2)session.cookie_lifetime控制客戶端cookie的生命週期,設置為0時cookie在瀏覽器關閉時過期。

使用數據庫存儲會話的優點是什麼?使用數據庫存儲會話的優點是什麼?Apr 24, 2025 am 12:16 AM

使用數據庫存儲會話的主要優勢包括持久性、可擴展性和安全性。 1.持久性:即使服務器重啟,會話數據也能保持不變。 2.可擴展性:適用於分佈式系統,確保會話數據在多服務器間同步。 3.安全性:數據庫提供加密存儲,保護敏感信息。

您如何在PHP中實現自定義會話處理?您如何在PHP中實現自定義會話處理?Apr 24, 2025 am 12:16 AM

在PHP中實現自定義會話處理可以通過實現SessionHandlerInterface接口來完成。具體步驟包括:1)創建實現SessionHandlerInterface的類,如CustomSessionHandler;2)重寫接口中的方法(如open,close,read,write,destroy,gc)來定義會話數據的生命週期和存儲方式;3)在PHP腳本中註冊自定義會話處理器並啟動會話。這樣可以將數據存儲在MySQL、Redis等介質中,提升性能、安全性和可擴展性。

什麼是會話ID?什麼是會話ID?Apr 24, 2025 am 12:13 AM

SessionID是網絡應用程序中用來跟踪用戶會話狀態的機制。 1.它是一個隨機生成的字符串,用於在用戶與服務器之間的多次交互中保持用戶的身份信息。 2.服務器生成並通過cookie或URL參數發送給客戶端,幫助在用戶的多次請求中識別和關聯這些請求。 3.生成通常使用隨機算法保證唯一性和不可預測性。 4.在實際開發中,可以使用內存數據庫如Redis來存儲session數據,提升性能和安全性。

您如何在無狀態環境(例如API)中處理會議?您如何在無狀態環境(例如API)中處理會議?Apr 24, 2025 am 12:12 AM

在無狀態環境如API中管理會話可以通過使用JWT或cookies來實現。 1.JWT適合無狀態和可擴展性,但大數據時體積大。 2.Cookies更傳統且易實現,但需謹慎配置以確保安全性。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器