如何在子主題中覆蓋父主題函數

已發表: 2022-11-01

如果您在 WordPress 中創建子主題,您可能會想要覆蓋父主題中的某些功能。 在本文中,我們將向您展示如何在您的子主題中覆蓋父主題函數。 首先,您需要了解 WordPress 是如何加載函數的。 當一個函數被調用時,WordPress首先在子主題中尋找它。 如果沒有找到它,它會在父主題中查找。 所以,如果你想覆蓋一個函數,你只需要在你的子主題中創建它。 假設您要覆蓋父主題的 get_header() 函數。 您只需在子主題的 functions.php 文件中創建一個 get_header() 函數。 新函數如下所示: function get_header() { // 你的代碼在這裡 } 現在,當 WordPress 調用 get_header() 函數時,它將使用你的新函數而不是父主題的函數。 當然,您也可以通過簡單地將它們從父主題複製到子主題來覆蓋函數。 但是,我們不推薦這種方法,因為當父主題更新時,很容易忘記更新子主題中的功能。 最好使用覆蓋方法,這樣您就可以確保您的子主題始終使用最新版本的父主題功能。

本文將引導您了解如何覆蓋 WordPress 的家長主題功能。 您可以使用三種方法之一更改函數的觸發順序,也可以完全阻止它們發生。 創建父主題時,最好為您的函數包含插件,以便在子主題中輕鬆修改它們。 要從父主題中刪除函數,請使用 remove_action() 和 remove_filter() 方法。 根據您使用的掛鉤,將確定函數的優先級。 如果函數的優先級為 20,則重寫優先級為 25 的子主題將導致其行為與首次創建函數時不同。 另一方面,優先級與您如何編寫新函數無關; 只需選擇您想做的事情。

WordPress兒童主題的兒童主題

圖片來源:https://gvtechnolab.in/how-to-create-child-theme-wordpress/

WordPress 子主題是從另一個主題(稱為父主題)繼承其功能的主題。 當您想要更改現有主題而不失去更新父主題的能力時,通常會使用子主題。 當子主題處於活動狀態時,WordPress 將首先在子主題的目錄中查找模板文件。 如果在子主題目錄中找不到模板文件,WordPress 將在父主題目錄中查找相同的模板文件。 這允許您覆蓋父主題中的任何模板文件,而無需直接編輯父主題的文件。

WordPress 使創建網站變得簡單,只需很少的 HTML、CSS 和/或 PHP 知識。 這種方法的缺點是,一旦開發者更新了主題,對其所做的任何修改都將丟失。 使用子主題是一個更好的主意,因為它允許您更改網站而無需更改主題的任何內容。 主題文件的編輯或更改取決於子主題是原生主題還是修改後的主題。 因為它只更改您指定的父主題的一部分,所以它不會復制所有內容。 為了使子主題正常運行,必須存在三樣東西:文件夾、樣式表和functions.php 文件。 子主題應該包括它自己的文件夾、樣式表和functions.php 文件。

子主題位於 WordPress 安裝的 WP-content/themes 區域,就像任何其他主題一樣。 您只需要主題的名稱和模板。 將其餘部分嚴格保留以用於發布目的至關重要,因為我不這樣做。 如果您使用 functions.php,您可以更改和添加功能和特性到 WordPress 網站。 創建文件就像創建樣式表一樣簡單。 如果你不想使用 PHP 來修改主題,你可以不使用它。 如果你有一個父主題,你應該很清楚你的網站應該是什麼樣子。

如果你想在這裡做,你必須首先獲得你父主題的樣式表上的信息。 CSS 和@import 規則是執行此操作的兩種方法。 如果一切順利,您的孩子主題應該看起來就像您為他或她創建的主題一樣。 我們現在可以開始定制我們的主題並改變周圍的事物以達到預期的結果。 有多種選項可用於自定義,我們將徹底檢查每一個選項。 可以將自定義樣式添加到與父主題具有相同樣式層次結構的子主題中。 您使用的方法可用於對您的網站進行任意數量的更改。

保持子主題的文件夾結構與父主題的順序相同總是一個好主意。 如果父主題中名為 page-templates 的文件包含名為 page-templates 的文件夾,您可以在子主題的目錄中創建一個包含相同名稱的文件夾。 我們只需將 page.php 從父主題重命名為 custom-full-width.php 以創建我們的自定義頁面模板。 第一個示例是一個footer-custom.php 函數,它為頁腳元素添加了一個全角類,如下所示。 現在我們只需要在下面的樣式表中輸入代碼。 這是我們的全角頁面。 儘管可能有一些潤色,但我們現在應該對結果感到滿意。

主題掛鉤允許您自定義子主題,而無需編輯其核心文件。 您可以使用主題掛鉤立即向主題添加內容,例如函數。 鉤子有兩種:動作鉤子和過濾器鉤子。 自定義功能可以通過操作掛鉤添加到現有功能,而過濾功能可以修改手頭的功能。 在 WordPress 中創建子主題很簡單; 只需要一行代碼即可。 在這種情況下,目標是在 25 主題中添加頁腳功能。 如果您使用functions.php 選項,請確保您的子主題中修改後的 footer.php 文件也被刪除。

兒童主題中的鉤子可以擴展您孩子的藝術作品的範圍。 使用子主題,我們可以完全自定義網站,而無需修改核心文件。 因此,如果您想添加主題或框架,無需從頭開始編寫; 您的更改不受主題更新的影響; 而且,如果出現問題,您將始終擁有一個功能主題

使用兒童主題的 3 個理由

您可能想要使用子主題有幾個原因。 您可以向現有主題添加更多自定義。 如果您想自定義網站的外觀,您可以使用已經具有自定義功能的主題。 如果您沒有時間或知識來修改原始代碼,您可以使用主題。 大多數情況下,使用子主題是獲得所需結果的最便捷方式。 當您使用好的父主題時,您會注意到並理解您所做的更改。 使用兒童主題的眾多優點之一是您可以創建一個特定於您孩子的主題,但它也有一些缺點。 子主題可能與您創建的其他插件、主題或可定制性發生衝突。 WordPress 的第二個問題是子主題不適用於舊版本的平台。 所有子主題並不總是與所有 WordPress 插件兼容。 使用子主題的好處遠遠超過使用父主題的缺點。 在發布之前,您可能仍想使用演示或嘗試子主題。

如何在子主題中添加功能 PHP

圖片來源:https://www.wpbeaverbuilder.com/redirect-wordpress-page/

在我們的例子中,php 只需要創建一個名為“functions”的文件,因此我們可以將它保存在我們的子主題文件夾中。 要保存位於文本編輯器中的 php-tags,請輸入 PHP 開始和結束標記並將其保存為函數。 你也有選擇。 第一個函數文件上傳後將上傳到您的子主題文件夾。

在本教程中,我們將學習如何向 WordPress 子主題添加功能。 在二十一十二主題中,我們將為帖子的元信息賦予不同的外觀。 作為系列的一部分,您將在本教程中學習如何向子主題添加功能。 當我們查看 Twenty Twelve 中包含的 functions.php 文件時,我們可以看到它的標題包含一個非常有趣的行。 可插入函數被包裝在這樣的調用中。 僅當父主題中不存在該函數時,才會加載二十二個_nice_function(假設它存在)。 為了創建一個空文件,在我們的子主題文件夾中輸入 functions.php。

在本教程中,我們將修改二十一十二主題的默認輸出。 將創建一個新的部門來處理為發布元信息行生成格式化字符串的函數。 我們必須在創建 child-custom-meta div 的時候設置它的 CSS 規則。 新的functions.php文件和新的style.html文件必須上傳到子主題文件夾。

如何訪問您的子主題中的文件

子主題的文件夾結構允許您修改主題中的特定文件。 首先,必須在您的站點上找到子主題的文件夾。 之後,使用以下路徑: br>a href=www.yourdomain.com/br>www.yourdomain.com/yourparenttheme 文件夾/br>www.yourdomain.com/yourchildtheme 文件夾/br>/a> 如果您的子主題位於sites/blog/themes/childtheme,例如,您的父主題將位於sites/blog/themes/childtheme。 確定對標頭進行了更改。 例如,您可以通過訪問 site/blog/themes/child-theme/header 來閱讀該文件。 如果要修改整個父主題而不是子主題中的特定文件,可以使用父主題的文件夾結構訪問父主題的文件。 首先,請確保您的站點上有父主題的文件夾。 以下是下一步。 www.sitename.com/ 例如,如果您的父主題位於sites/blog/themes/default,您的父主題的文件將位於那裡。