當(dāng)前位置:首頁(yè)>WordPress建站>WordPress開(kāi)發(fā)>在 WordPress 中添加自定義功能/函數(shù)的四種方法

在 WordPress 中添加自定義功能/函數(shù)的四種方法

了解如何創(chuàng)建 WordPress 自定義功能插件并將自定義代碼添加到您的主題、專用插件或通過(guò) WordPress 儀表板管理它們。

作為一名 WordPress 后端開(kāi)發(fā)人員十多年來(lái),我使用了各種方法來(lái)調(diào)整 WordPress 以滿足我和其他人的需求。最常見(jiàn)的一種是編寫(xiě) WordPress 自定義功能插件。正如您將在下面看到的,這不是唯一的選擇,也不總是正確的選擇。

雖然我將這篇文章獻(xiàn)給開(kāi)發(fā)人員,但項(xiàng)目經(jīng)理還將了解這些方法如何滿足其團(tuán)隊(duì)的需求以及何時(shí)以及如何使用它們。

以下是我用來(lái)自定義 WordPress 的方法:

  • 將您的代碼添加到主題的functions.php
  • 編寫(xiě)一個(gè)WordPress自定義功能插件
  • 使用插件來(lái)管理自定義代碼片段
  • 通過(guò)必要插件來(lái)自定義

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

將代碼添加到Functions.php

在“舊”時(shí)代,當(dāng) WordPress 主要在前端和后端使用 PHP 時(shí),對(duì)站點(diǎn)進(jìn)行一些更改的最快方法是將代碼添加到主題的 functions.php 中。

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

通過(guò) WordPress 儀表板中的主題文件編輯器將自定義代碼添加到functions.php 文件中。
通過(guò)主題文件編輯器在主題functions.php文件中自定義代碼。

隨著時(shí)間的推移,這從我最喜歡的自定義 WordPress 方式變成了我最不喜歡的方式。

主要原因是它functions.php附屬于一個(gè)主題。如果這不是自定義主題并且有人更新它,我的調(diào)整就會(huì)消失。

解決方案是創(chuàng)建一個(gè)子主題,其中包含與父主題相關(guān)的更改。

我不再向functions.php文件添加盡可能多的自定義代碼的主要原因是,大部分代碼都是插件領(lǐng)域,通常向網(wǎng)站添加功能,而不僅僅是主題。

還有兩種情況我需要將自定義代碼寫(xiě)入functions.php

  1. 該代碼與自定義或子主題相關(guān)。
  2. 在將它們移動(dòng)到另一個(gè)地方之前測(cè)試快速更改,因?yàn)?code>functions.php通常很容易訪問(wèn)它。

另外,請(qǐng)記住,這functions.php不是托管許多更改的地方,因?yàn)閱蝹€(gè)文件可能會(huì)變得過(guò)于復(fù)雜。特別是當(dāng)我的更改中需要多個(gè) PHP 文件和其他文件類型時(shí),我選擇編寫(xiě)一個(gè) WordPress 自定義功能插件。

編寫(xiě)自定義函數(shù)插件

如前所述,我添加到站點(diǎn)的大部分代碼實(shí)際上是構(gòu)建或擴(kuò)展獨(dú)立于主題的功能。

一旦我知道我將向網(wǎng)站添加更多自定義項(xiàng),我就會(huì)啟動(dòng)一個(gè)自定義功能插件。它通常帶有站點(diǎn)的名稱,就像我將 WP Mayor 稱為“WP Mayor 自定義功能”插件一樣。

命名很重要!首先,它允許其他管理員看到該插件與該站點(diǎn)相關(guān),并且可能僅托管該站點(diǎn)的更改。

其次,保持插件文件夾和文件名唯一可以防止您的 WordPress 站點(diǎn)意外地使用在 wordpress.org 插件存儲(chǔ)庫(kù)中具有相同 slug 的插件覆蓋它。

創(chuàng)建 WordPress 自定義功能插件很容易。您所需要的只是wp-content/plugins. 但是,您應(yīng)該首先創(chuàng)建一個(gè)新文件夾,因?yàn)槟ǔP枰鄠€(gè)文件來(lái)構(gòu)建代碼,并且可能需要添加 JavaScript 和 CSS 代碼文件。

按照我們的示例,假設(shè)我們現(xiàn)在有了wp-content/plugins/wp-mayor-custom-functions/wp-mayor-custom-functions.php插件文件夾和主文件。

讓我們向文件添加一個(gè)標(biāo)頭來(lái)告訴 WordPress 我們的插件的用途。雖然“插件名稱”足以使其在技術(shù)上工作,但讓我們看一個(gè)更高級(jí)的示例:

/**
 * 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
 */

這應(yīng)該已經(jīng)顯示在我們的 WordPress 儀表板的“插件”下。

在插件菜單中啟用的 WordPress 自定義功能插件。
我們的自定義功能插件位于插件部分。

現(xiàn)在,我們可以瘋狂地將實(shí)際的 PHP 代碼添加到我們的文件中。

提示:當(dāng)我無(wú)法通過(guò) FTP 訪問(wèn)站點(diǎn)或者只是懶惰時(shí),我會(huì)使用Pluginception插件快速啟動(dòng)一些內(nèi)容,稍后我可以通過(guò) WordPress 儀表板中的插件文件編輯器填充代碼。

您現(xiàn)在是否應(yīng)該將特定站點(diǎn)的所有代碼放入一個(gè)專用的自定義功能插件中?

這取決于。當(dāng)我知道自定義代碼用于多個(gè)項(xiàng)目時(shí),我將其分離到不同的插件中。同時(shí),我在單個(gè)插件中收集專用于特定站點(diǎn)的代碼。插件越少,我需要維護(hù)的代碼存儲(chǔ)庫(kù)就越少。

到目前為止聽(tīng)起來(lái)不錯(cuò)嗎?嗯,在過(guò)去幾年管理一家更大的插件公司并對(duì)網(wǎng)站進(jìn)行了一百多次調(diào)整時(shí),我注意到這些自定義插件仍然非常以開(kāi)發(fā)人員為中心。因此,讓我們?cè)谙乱还?jié)中看看另一種方法。

使用代碼片段插件來(lái)管理

在我從事大型插件業(yè)務(wù)的大部分時(shí)間里,我負(fù)責(zé)插件商店的技術(shù)方面。

我將任何非主題特定的代碼放入單個(gè)自定義函數(shù)插件中。對(duì)各個(gè)插件和自定義的所有調(diào)整,例如將空卡重定向到定價(jià)頁(yè)面、追加銷售或黑色星期五優(yōu)惠,都被記錄下來(lái)并分布在具有可讀名稱的各種文件中。

好吧,對(duì)于任何有權(quán)訪問(wèn)代碼的人來(lái)說(shuō),“已記錄”和“可讀”。

盡管我總是在周圍進(jìn)行調(diào)整或回答有關(guān)它們的問(wèn)題,但我覺(jué)得這不是處理大多數(shù)自定義功能的有效且可持續(xù)的方式。

隨著越來(lái)越多的人參與管理商店和網(wǎng)站,我想讓他們有機(jī)會(huì)了解這些調(diào)整,而不必在我們的知識(shí)庫(kù)中保留專門(mén)的頁(yè)面來(lái)更新。

解決方案是安裝一個(gè) WordPress 自定義功能插件,用于管理 WordPress 儀表板中的所有或大部分代碼片段。

我個(gè)人最喜歡的是免費(fèi)的代碼片段插件,但也有其他插件。

對(duì)于代碼片段,儀表板中有一個(gè)包含所有代碼片段的專用菜單項(xiàng)。

現(xiàn)在,任何具有管理員訪問(wèn)權(quán)限的人都可以看到這些調(diào)整。我為每個(gè)片段使用描述性名稱,使用注釋字段對(duì)其進(jìn)行深入描述,并為更改組分配標(biāo)簽。

代碼片段插件中的代碼片段列表。
自定義代碼片段的列表。

我的標(biāo)簽通常是調(diào)整的插件或主題的名稱以及涉及的頁(yè)面部分,例如“WooCommerce”和“Checkout”。

代碼片段插件頁(yè)面上的自定義代碼片段示例。
此示例顯示了一個(gè)自定義代碼,該代碼在帖子下方顯示上次更新的日期。

如果你選擇了好的名字和好的結(jié)構(gòu),任何人都應(yīng)該能夠找到并理解調(diào)整。包括我自己。我什至在我的個(gè)人網(wǎng)站上也使用這種方法,因?yàn)樗峁┝撕芏嗍孢m感。

使用自定義函數(shù)插件對(duì)于您只臨時(shí)需要的代碼片段特別有用,例如一些只需要偶爾運(yùn)行一次的清理代碼或一些面向前端的操作(例如啟用促銷)。

這安全嗎?

默認(rèn)情況下,WordPress 允許任何具有“管理員”角色的人在后端編輯插件和主題文件。使用自定義代碼插件與此沒(méi)有什么不同。因此,防御性的、只給每個(gè)人所需的角色的舊規(guī)則仍然適用。

開(kāi)發(fā)人員可能想知道,通過(guò)插件管理代碼時(shí),頁(yè)面請(qǐng)求上的一些非常早期的掛鉤不可用,因?yàn)椴寮旧硇枰紫燃虞d。如果您需要在任何其他插件之前加載自定義代碼,請(qǐng)查看下面的必須使用的插件(MU Plugins)選項(xiàng)。

使用必要插件來(lái)自定義 WordPress 功能

所謂“必要”插件是插件中的一個(gè)特殊品種。

由于它們?cè)谌魏纹渌罢!辈寮皥?zhí)行,因此我使用它們來(lái)打開(kāi)或關(guān)閉給定頁(yè)面的特定插件。您可以使用此類代碼來(lái)加速偽 API 或?qū)?code>admin-ajax.php.

必要插件的另一個(gè)特點(diǎn)是它們默認(rèn)啟用,沒(méi)有人可以通過(guò) WordPress 儀表板禁用或更改它們。這使得它們成為甚至管理員用戶都無(wú)法訪問(wèn)的基本代碼的理想選擇。

創(chuàng)建必要插件

必要插件托管在文件夾中wp-content/mu-plugins。新安裝的 WordPress 中不存在此文件夾。不過(guò),一些插件或托管公司可能會(huì)在此處動(dòng)態(tài)添加內(nèi)容。

要在 mu-plugin 文件夾中添加新插件,您必須在計(jì)算機(jī)上使用我在上面向您展示的自定義插件的插件文件頭創(chuàng)建一個(gè) PHP 文件。這次,選擇唯一的名稱并不重要,因?yàn)楸仨毷褂玫牟寮粫?huì)自動(dòng)更新。

一旦您對(duì)新的自定義功能插件感到滿意,請(qǐng)通過(guò) FTP 將其手動(dòng)上傳到該wp-content/mu-plugins文件夾??。mu-plugins如果該文件夾不存在,則創(chuàng)建該文件夾。

雖然您無(wú)法通過(guò) WordPress 管理面板更改必要插件,但您可以在插件 >強(qiáng)制使用 下看到它們。

WordPress 管理中的插件下列出了必須使用的 WordPress 自定義功能插件。
必要插件在插件部分有自己的專用選項(xiàng)卡。

理想情況下,必要插件是單文件插件。盡管您可以在主 PHP 文件中引用其他文件,但 WordPress 無(wú)法在子文件夾中找到它們。但是,如果您創(chuàng)建一個(gè)復(fù)雜的 Must Use 插件,請(qǐng)考慮將主要代碼移至常規(guī)插件中,并使用 必要插件 僅在所有其他插件之前加載運(yùn)行所需的內(nèi)容。

總結(jié)

我們探索了向 WordPress 添加自定義代碼的各種方法,從傳統(tǒng)的向主題functions.php文件添加代碼、獨(dú)立插件和 WordPress 自定義功能插件到使用 必要插件(mu-plugins)。每種方法都有自己的優(yōu)點(diǎn)和潛在缺點(diǎn),適合不同的需求和場(chǎng)景,具體取決于更改的類型以及誰(shuí)應(yīng)該有權(quán)訪問(wèn)它。

拓展閱讀:

聲明:本站所有文章,如無(wú)特殊說(shuō)明或標(biāo)注,均為本站原創(chuàng)發(fā)布。任何個(gè)人或組織,在未征得本站同意時(shí),禁止復(fù)制、盜用、采集、發(fā)布本站內(nèi)容到任何網(wǎng)站、書(shū)籍等各類媒體平臺(tái)。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系我們進(jìn)行處理。

給TA打賞
共{{data.count}}人
人已打賞
歡迎關(guān)注WordPress大學(xué)公眾號(hào) WPDAXUE
WordPress開(kāi)發(fā)

WordPress 6.5 新增的塊綁定 API 使用示例

2024-3-7 22:49:40

WordPress開(kāi)發(fā)

WordPress 6.5 新功能:字體庫(kù) 詳解

2024-3-15 11:23:19

0 條回復(fù) A文章作者 M管理員
    暫無(wú)討論,說(shuō)說(shuō)你的看法吧
?
個(gè)人中心
購(gòu)物車
優(yōu)惠劵
今日簽到
有新私信 私信列表
搜索

永兴县| 汶川县| 黄龙县| 泾源县| 锡林浩特市| 扶风县| 娱乐| 泰州市| 安国市| 微博| 托克逊县| 运城市| 香河县| 佛教| 秦安县| 盐津县| 衡东县| 罗源县| 巴林右旗| 吉安县| 三河市| 枣阳市| 洪泽县| 兴山县| 本溪| 陆良县| 湖口县| 沽源县| 青川县| 休宁县| 车致| 连江县| 锦屏县| 宁明县| 通榆县| 宜君县| 泰安市| 永济市| 进贤县| 莎车县| 凤台县|