在 WordPress 中使用自訂功能外掛的指南

已發表: 2024-03-07

身為 WordPress 後端開發人員十多年來,我使用了各種方法來調整 WordPress 以滿足我和其他人的需求。 最常見的一種是編寫 WordPress 自訂功能外掛。 正如您將在下面看到的,這不是唯一的選擇,也不總是正確的選擇。

雖然我將這篇文章獻給開發人員,但專案經理也將了解這些方法如何滿足其團隊的需求以及何時以及如何使用它們。

以下是我用來自訂 WordPress 的方法:

  • 將您的程式碼加入主題的functions.php
  • 編寫一個WordPress自訂功能插件
  • 使用外掛程式來管理自訂程式碼片段
  • 獎勵:必須使用插件

讓我們更深入地了解這些方法。

將程式碼加入functions.php

在「舊」時代,當 WordPress 主要在前端和後端使用 PHP 時,對網站進行一些更改的最快方法是將程式碼新增到主題的functions.php 中。

您仍然可以執行此操作,如果您敢的話,請使用 WordPress 儀表板中的主題文件編輯器。

透過 WordPress 儀表板中的主題檔案編輯器將自訂程式碼新增至functions.php 檔案。
透過主題檔案編輯器在主題的functions.php檔案中自訂程式碼。

隨著時間的推移,這從我最喜歡的自訂 WordPress 方式變成了我最不喜歡的方式。

主要原因是functions.php附加到一個主題。 如果這不是自訂主題並且有人更新它,我的調整就會消失。

解決方案是建立一個子主題,其中包含與父主題相關的變更。

我不再為functions.php檔案添加盡可能多的自訂程式碼的主要原因是,實際上,大部分程式碼都是插件領域,通常會為網站添加功能,而不僅僅是主題。

還有兩種情況需要將自訂程式碼寫入到functions.php中:

  1. 該代碼與自訂或子主題相關。
  2. 在將它們移動到另一個地方之前測試快速更改,因為functions.php通常很容易訪問。

另外,請記住, functions.php不是託管許多變更的地方,因為單一檔案可能會變得過於複雜。 特別是當我的變更中需要多個 PHP 檔案和其他檔案類型時,我選擇編寫 WordPress 自訂功能外掛程式。

編寫自訂函數插件

如前所述,我添加到網站的大部分程式碼實際上是建置或擴展獨立於主題的功能。

一旦我知道我將向網站添加更多自訂項,我就會啟動一個自訂功能插件。 它通常帶有網站的名稱,就像我將 WP Mayor 稱為「WP Mayor 自訂功能」外掛程式一樣。

命名很重要! 首先,它允許其他管理員看到該外掛程式與該網站相關,並且可能僅託管該網站的變更。

其次,保持外掛程式資料夾和檔案名稱唯一可以防止您的 WordPress 網站意外地使用在 wordpress.org 外掛程式儲存庫中具有相同 slug 的外掛程式覆蓋它。

建立 WordPress 自訂功能外掛很容易。 您所需要的只是wp-content/plugins中的一個 PHP 檔案。 但是,您應該先建立一個新資料夾,因為您通常需要多個檔案來建立程式碼,並且可能需要新增 JavaScript 和 CSS 程式碼檔案。

按照我們的範例,假設我們現在有wp-content/plugins/wp-mayor-custom-functions/wp-mayor-custom-functions.php插件資料夾和主檔案。

讓我們在文件中添加一個標頭來告訴 WordPress 我們的外掛的用途。 雖然「插件名稱」足以使其在技術上工作,但讓我們來看一個更高級的範例:

 /** * Plugin Name: WP Mayor Custom Function * Plugin URI: https://wpmayor.com * Description: All the cool features we custom-built for us. * Version: 1.0.0 * Requires at least: 6.2 * Requires PHP: 8.1 * Author: Thomas Maier */

這應該已經顯示在我們的 WordPress 儀表板的「外掛」下。

在外掛程式選單中啟用的 WordPress 自訂功能外掛程式。
我們的自訂功能插件位於插件部分。

現在,我們可以瘋狂地將實際的 PHP 程式碼加入我們的檔案中。

提示:當我無法透過 FTP 存取網站或只是懶惰時,我會使用 Pluginception 外掛程式快速啟動一些內容,稍後我可以透過 WordPress 儀表板中的外掛程式檔案編輯器填充程式碼。

現在您應該將特定網站的所有程式碼放入專用的自訂功能插件中?

這取決於。 當我知道自訂程式碼用於多個專案時,我將其分離到不同的插件中。 同時,我在單一插件中收集專用於特定網站的程式碼。 插件越少,我需要維護的程式碼儲存庫就越少。

到目前為止聽起來不錯嗎? 嗯,在過去幾年管理一家更大的插件公司並對網站進行了一百多次調整時,我注意到這些自訂插件仍然非常以開發人員為中心。 因此,讓我們在下一節中看看另一種方法。

使用程式碼片段的自訂函數插件

在我從事大型插件業務的大部分時間裡,我負責插件商店的技術方面。

我將任何非主題特定的程式碼放入單一自訂函數插件中。 所有外掛程式和自訂的所有調整,例如將空卡重定向到定價頁面、追加銷售或黑色星期五優惠,都被記錄下來並分佈在具有可讀名稱的各種文件中。

好吧,對於任何有權訪問代碼的人來說,“已記錄”和“可讀”。

儘管我總是在周圍進行調整或回答有關它們的問題,但我覺得這不是處理大多數自訂功能的有效且可持續的方式。

隨著越來越多的人參與管理商店和網站,我想讓他們有機會了解這些調整,而不必在我們的知識庫中保留專門的頁面來更新。

解決方案是安裝一個 WordPress 自訂功能插件,用於管理 WordPress 儀表板中的所有或大部分程式碼片段。

我個人最喜歡的是免費的程式碼片段插件,但也有其他插件。

對於程式碼片段,儀表板中有一個包含所有程式碼片段的專用選單項目。

現在,任何具有管理員存取權限的人都可以看到這些調整。 我為每個片段使用描述性名稱,使用註釋欄位對其進行深入描述,並為更改群組分配標籤。

程式碼片段插件中的程式碼片段列表。
自訂程式碼片段的清單。

我的標籤通常是調整的外掛程式或主題的名稱以及涉及的頁面部分,例如“WooCommerce”和“Checkout”。

程式碼片段外掛程式頁面上的自訂程式碼片段範例。
此範例顯示了一個自訂程式碼,該程式碼在貼文下方顯示上次更新的日期。

如果你選擇了好的名字和好的結構,任何人都應該能夠找到並理解調整。 包括我自己。 我甚至在我的個人網站上也使用這種方法,因為它提供了很多舒適感。

使用自訂函數外掛程式對於您只臨時需要的程式碼片段特別有用,例如一些只需要偶爾運行一次的清理程式碼或一些面向前端的操作(例如啟用促銷)。

這樣安全嗎?

預設情況下,WordPress 允許任何具有「管理員」角色的人在後端編輯外掛程式和主題檔案。 使用自訂程式碼插件與此沒有什麼不同。 因此,防禦性的、只給每個人所需的角色的舊規則仍然適用。

開發人員可能想知道,透過外掛程式管理程式碼時,頁面請求上的一些非常早期的掛鉤不可用,因為插件本身需要先載入。 如果您需要在任何其他插件之前加載自訂程式碼,請查看下面的必須使用插件選項。

必須使用外掛程式中的自訂 WordPress 功能

所謂「必須使用」的插件是插件中一個特殊的品種。

由於它們在任何其他“正常”插件之前執行,因此我使用它們來打開或關閉給定頁面的特定插件。 您可以使用此類程式碼來加速偽 API 或對admin-ajax.php的呼叫。

必須使用外掛程式的另一個特點是它們預設啟用,沒有人可以透過 WordPress 儀表板停用或更改它們。 這使得它們成為甚至管理員用戶都無法訪問的基本代碼的理想選擇。

創建 mu 插件

必須使用的插件託管在資料夾wp-content/mu-plugins中。 新安裝的 WordPress 中不存在此資料夾。 不過,一些外掛程式或託管公司可能會在此處動態添加內容。

要在 mu-plugin 資料夾中新增插件,您必須使用我在上面為您展示的自訂插件的插件檔案頭在電腦上建立一個 PHP 檔案。 這次,選擇唯一的名稱並不重要,因為必須使用的插件不會自動更新。

一旦您對新的自訂功能插件感到滿意,請透過 FTP 將其手動上傳到wp-content/mu-plugins資料夾。 如果mu-plugins資料夾不存在,請建立它。

雖然您無法透過 WordPress 管理面板更改必須使用的插件,但您可以在插件 > 必須使用下看到它們列出。

WordPress 管理中的外掛程式下列出了必須使用的 WordPress 自訂功能外掛。
必須使用的插件在插件部分有自己的專用選項卡。

理想情況下,必須使用的插件是單一檔案插件。 儘管您可以在主 PHP 檔案中引用其他文件,但 WordPress 無法在子資料夾中找到它們。 但是,如果您建立一個複雜的 Must Use 插件,請考慮將主要程式碼移至常規插件中,並使用 MU 插件僅在所有其他插件之前加載運行所需的內容。

結論

我們探索了為 WordPress 添加自訂程式碼的各種方法,從傳統的將程式碼新增至主題的functions.php檔案、獨立外掛程式和 WordPress 自訂函數外掛程式到使用 Must Use(mu-plugins)。 每種方法都有自己的優點和潛在缺點,適合不同的需求和場景。

如您所見,作為開發人員和專案經理,這是我的一段旅程。 如今,我仍然使用所有方法,具體取決於更改的類型以及誰應該有權訪問它。

我希望這篇文章可以幫助您,我的初級和高級開發人員,就在 WordPress 中將程式碼新增為自訂功能外掛程式的正確方法做出自己的決定。 如果我錯過了什麼,請在評論中告訴我。