新聞中心
您已經(jīng)運(yùn)行wordpress網(wǎng)站一段時間了,它一直在做您需要做的事情。但是現(xiàn)在,您決定需要對其進(jìn)行自定義。

塔什庫爾干塔吉克網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、自適應(yīng)網(wǎng)站建設(shè)等網(wǎng)站項目制作,到程序開發(fā),運(yùn)營維護(hù)。成都創(chuàng)新互聯(lián)公司2013年成立到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運(yùn)維經(jīng)驗,來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)。
或者,您可能正在使用從主題目錄下載的主題或已購買的主題創(chuàng)建站點,但您意識到它不能完全按照您的需要運(yùn)行。
那你怎么辦呢?
您可以找到一個插件來提供您需要的自定義或切換到新主題。但是,如果您對當(dāng)前的主題感到滿意并且找不到可以添加您需要的功能的插件怎么辦?
答:您需要自定義您的主題。最佳實踐說:您通過(WordPress)子主題來做到這一點。
在本教程中,我們將更多地討論子主題是什么以及它是如何工作的。我們還將帶您完成從頭開始創(chuàng)建主題的過程,并向您展示如何將修改后的主題變成子主題。
修改現(xiàn)有主題是開始WordPress開發(fā)的好方法。更改的結(jié)果將很容易看到和理解。但是,直接對活動主題進(jìn)行編輯可能會導(dǎo)致問題,因為即使是一個小錯誤也可能導(dǎo)致主題無法使用。每當(dāng)主題更新時,您所做的所有更改也將丟失。
然而,有一種方法可以避免這些問題,那就是創(chuàng)建“子主題”。子主題的工作方式與任何其他WordPress主題大致相同,不同之處在于它使用現(xiàn)有主題作為基礎(chǔ)(或“父”)。您對子主題所做的更改將反映在您的站點上,而無需直接更改父主題。
自定義WordPress的方法
自定義主題有風(fēng)險。如果您在第三方主題(例如您從市場上購買的主題)中編輯代碼,那么當(dāng)您下次更新主題時,您所做的所有更改都將丟失。這意味著您的網(wǎng)站不僅會恢復(fù)原狀,而且您的所有工作都被浪費了。
可以通過三種方式自定義您的WordPress網(wǎng)站:
- 直接編輯您的主題。
- 安裝插件。
- 創(chuàng)建當(dāng)前主題的子主題。
讓我們依次來看看其中的每一個。
編輯您的主題
如果您的網(wǎng)站運(yùn)行自定義WordPress主題,這意味著它是專門為您的網(wǎng)站開發(fā)的,您可以選擇安全地編輯它,因為下次更新主題時不會丟失您的自定義設(shè)置。
相反,如果您或您的開發(fā)人員將來對主題進(jìn)行更改,您將編輯的是主題的自定義版本,而不是更改之前的原始版本。
這并不意味著編輯您的主題并非沒有風(fēng)險。如果您沒有編寫主題的經(jīng)驗,創(chuàng)建子主題可能仍然更安全(我們稍后會看到如何)。這是我做的事情:我有一個基本主題,我在我所有的網(wǎng)站上使用,具有標(biāo)準(zhǔn)布局、鉤子和函數(shù),然后我在每個網(wǎng)站上使用子主題對其進(jìn)行自定義。
如果您直接編輯主題,請確保保留原始主題的備份,不要在實時站點中編輯主題(改用開發(fā)或臨時站點),并使用版本控制來跟蹤您的更改。
如果您使用的是第三方主題,則永遠(yuǎn)不要直接編輯它。相反,使用插件或創(chuàng)建子主題。
添加插件
自定義WordPress主題的第二個選項是安裝或編寫插件。
如果您要進(jìn)行的自定義是功能性的而不是與設(shè)計相關(guān)的,那么插件是一種更合適的方法。所以如果你想添加額外的代碼,最好還是創(chuàng)建一個插件。
插件不必很大或很復(fù)雜:如果您需要向主題中的functions.php文件添加額外的代碼,請創(chuàng)建一個簡單的插件來向您的站點添加幾行代碼。一個很好的例子是注冊自定義文章類型。
將代碼添加到主題的functions.php可能很誘人,但添加帖子類型是對網(wǎng)站的功能更改,而不是設(shè)計更改。如果您以后要切換主題,您不會希望丟失這些帖子類型以及您使用它們創(chuàng)建的所有帖子。這就是為什么您應(yīng)該安裝或創(chuàng)建插件的原因。
有時您可以找到一個現(xiàn)有的插件來滿足您的需求,但有時您可能需要自己編寫插件代碼。
WordPress插件庫
如果對是否應(yīng)該創(chuàng)建插件或自定義主題(或子主題)有疑問,請問自己:如果我想在將來更改網(wǎng)站的設(shè)計并安裝新的WordPress主題,我是否希望保留此更改? 如果答案是肯定的,這意味著更改是功能性的而不是美學(xué)的,它應(yīng)該包含在插件中。
創(chuàng)建子主題
自定義WordPress主題的第三個選項是創(chuàng)建子主題。
以下是您使用子主題的一些場景:
- 您希望更改網(wǎng)站的設(shè)計,而不是功能。
- 您的網(wǎng)站正在運(yùn)行第三方主題或您想在當(dāng)前狀態(tài)下再次使用的主題。
- 您不想直接編輯現(xiàn)有主題,以防它引起問題(可能您不是經(jīng)驗豐富的主題開發(fā)人員)。
- 您的站點正在運(yùn)行一個設(shè)計為父主題的主題,例如框架主題。這些主題具有許多自定義選項,例如hooks,專為您添加到您自己的子主題而設(shè)計。
因此,子主題是一種向您的網(wǎng)站添加自定義內(nèi)容的有效且安全的方式。因此,讓我們更深入地了解它們。
什么是WordPress子主題?
那么,WordPress中的子主題究竟是什么?它是如何工作的?
子主題是與另一個主題協(xié)同工作的主題,稱為父主題。
它包含一些特定的說明來告訴WordPress這是一個子主題以及父主題是什么。WordPress 然后在大多數(shù)情況下使用來自父主題的代碼,但會使用來自子主題的代碼(如有必要)覆蓋它。
在許多方面,子主題的功能就像一個“正?!钡腤ordPress主題。它以相同的方式安裝、啟用和配置。子主題的獨特之處在于它依賴于另一個主題來確定其大部分內(nèi)容。另一個主題被稱為“父主題”。
WordPress將始終優(yōu)先考慮子主題的設(shè)置。因此,你能想到的子主題為坐在前面的家長。如果子主題中的設(shè)置覆蓋了父主題中的匹配設(shè)置,則子主題優(yōu)先。這使您可以僅更改要更改的主題部分,其他所有內(nèi)容都由現(xiàn)有父級處理。
例如,大多數(shù)父主題包含定義不同標(biāo)題文本級別的樣式,例如h1、h2、h3、h4等。假設(shè)父主題將h1字體大小定義為20px,但子主題指定與32px相同的標(biāo)題。在這種情況下,WordPress會將后一種樣式應(yīng)用于所有h1文本。但是,如果同一個子主題不包含h2、h3 和 h4 的特殊樣式說明,則仍將應(yīng)用父主題定義的樣式。
如果您可以直接編輯主題,您可能想知道為什么子主題值得麻煩。使用子主題實際上有很多優(yōu)點,因為它:
- 使您能夠更新父主題。您應(yīng)該始終保持網(wǎng)站的各個方面都是最新的。但是,如果您編輯了父主題,則更新后所有更改都將丟失。
- 可以輕松找到您所做的更改。發(fā)現(xiàn)您進(jìn)行更改的每個實例可能很困難。使用子主題使您的添加內(nèi)容更加清晰。
- 避免直接編輯父主題的風(fēng)險。如果您在處理主題時出錯,或者您對所做的修改不滿意,您可以輕松回滾到原始主題。
WordPress子主題中的文件
每個WordPress子主題必須至少有兩個文件:樣式表和函數(shù)文件。樣式表將在頂部包含注釋掉的文本,告訴WordPress這是一個子主題以及父主題是什么。函數(shù)文件將包含一個函數(shù),該函數(shù)將來自父主題的樣式表排入隊列。
注意:您可能會遇到一些指南,告訴您從子主題的樣式表調(diào)用父主題樣式表。這不再是正確的方法,您應(yīng)該在函數(shù)文件中使用排隊。我很快就會告訴你如何做到這一點。
你的子主題并不必須 包含的任何其他文件。與父主題不同,如果主題中沒有更多特定文件,它不需要index.php文件作為后備。這是因為如果子主題中不存在模板文件,WordPress將使用父主題中的文件。
因此,根據(jù)您希望子主題執(zhí)行的操作,您可以向樣式表、函數(shù)文件中添加額外的代碼,或者在子主題中創(chuàng)建額外的文件以覆蓋父主題。這些可能包括以下一項或多項:
- 模板文件覆蓋父主題中的相同文件,例如page.php當(dāng)您要自定義靜態(tài)頁面的顯示時。
- 當(dāng)您想要自定義站點設(shè)計的這些部分時,模板部分例如header.php或footer.php。
- 您從子主題中的模板文件調(diào)用的額外模板部分。因此,如果您想在顯示靜態(tài)頁面時自定義頁眉,您可以在子主題中創(chuàng)建一個名為header-page.php的文件和一個名為page.php的模板文件,該文件將覆蓋父主題中的page.php . 這個模板文件將與父主題中的模板文件相同,除了頭文件的調(diào)用,它會調(diào)用header-page.php 而不是header.php。
- 用于功能的額外包含文件。如果您想添加大量函數(shù)代碼并對其進(jìn)行組織,您可以為每組函數(shù)創(chuàng)建包含文件,然后在您的子主題的functions.php文件中調(diào)用它們。因此,例如,如果您想添加額外的定制器選項,您可以在您的子主題中添加一個名為customr.php的包含文件,然后從您的子主題中的函數(shù)文件中調(diào)用該文件。
但是,如果您確實添加了額外的文件和功能,WordPress怎么知道該使用哪個呢?來自父主題的那些還是來自子主題的那些?這就是我們接下來要講的。
WordPress如何選擇模板文件
WordPress在您的站點上顯示內(nèi)容時從您的主題中選擇模板文件的方式是參考模板層次結(jié)構(gòu)。
WordPress模板層次結(jié)構(gòu)
WordPress使用此層次結(jié)構(gòu)來處理主題中的模板文件,并在顯示給定類型的內(nèi)容時找到要使用的正確模板文件。它將從頂部開始(在上圖中的左側(cè))并依次查找給定內(nèi)容類型的每個文件。當(dāng)它找到將顯示該內(nèi)容的文件時,它將使用它。
假設(shè)您的主題有一個archive.php文件和一個category.php文件,但沒有tag.php文件。顯示類別檔案時,WordPress將使用category.php,因為它更特定于內(nèi)容類型。當(dāng)顯示標(biāo)簽檔案時,它將使用archive.php代替。
如果WordPress沒有為給定的內(nèi)容類型找到模板文件,它會默認(rèn)為包羅萬象的index.php文件,這就是為什么每個獨立主題(即不是子主題)都必須有一個index.php文件的原因.
這同樣適用于單個文章和頁面。假設(shè)您的主題有一個single.php文件,它是任何文章類型(包括頁面和自定義帖子類型)的單個帖子的統(tǒng)稱。它還有一個page.php文件。當(dāng)顯示單個頁面時,它將使用page.php。顯示文章時,它將使用singular.php。如果您注冊自定義文章類型并且不為該帖子類型添加模板文件,它將再次使用singular.php。
當(dāng)您使用子主題時,WordPress仍然使用模板層次結(jié)構(gòu)來決定在您的站點上輸出內(nèi)容時使用哪個文件。它查看父主題和子主題中的文件并使用它遇到的第一個文件。
所以想象你的子主題有singular.php和post.php,你的父主題有page.php和index.php。輸出單個文章時,WordPress將使用子主題中的post.php。輸出頁面時,它將使用父主題中的page.php。當(dāng)輸出自定義帖子類型的單個帖子時,它將使用來自子主題的single.php。
但是,如果您的子主題和父主題都有相同文件的實例怎么辦?
假設(shè)您將page.php文件添加到上一個示例中的子主題。因為該主題位于子主題中,所以它會覆蓋父主題中的相同文件。因此,當(dāng)顯示單個頁面時,WordPress將使用來自子主題的新page.php文件。
這就是為什么創(chuàng)建子主題可以讓您自定義父主題。如果您將父主題中的模板文件副本添加到子主題,然后對其進(jìn)行編輯以包含您要進(jìn)行的自定義,WordPress將使用這個新模板文件,而不是來自父主題的模板文件。這意味著您的自定義將在顯示內(nèi)容時使用,而無需您編輯父主題。好的!
WordPress如何從父主題和子主題運(yùn)行函數(shù)
如果您不想對主題中的模板文件進(jìn)行自定義,而是對功能進(jìn)行自定義,該怎么辦?
你也可以這樣做。首先,您需要讓自己滿意,這樣做的正確方法是通過子主題而不是插件。一個示例可能是您想要編輯父主題中已有的函數(shù),例如,在頁腳中輸出版權(quán)頁的函數(shù)。
然后將新函數(shù)添加到子主題中的函數(shù)文件,或添加到從函數(shù)文件調(diào)用的包含文件。
為確保您的新函數(shù)覆蓋父主題的功能,您需要了解如何覆蓋函數(shù)。有三種方法可以做到這一點:
- 通過在父主題中編寫一個與可插入函數(shù)同名的新函數(shù)。
- 通過將父主題中的函數(shù)從它所附加的鉤子中解開,然后編寫一個新函數(shù)來替換它。
- 通過編寫一個比原始函數(shù)具有更高優(yōu)先級的新函數(shù)并通過相同的鉤子調(diào)用它,這意味著它在原始函數(shù)之后被調(diào)用,因此可以覆蓋或增加它。
我們將在本文稍后介紹您如何執(zhí)行所有這些操作。但首先,讓我們看一下您何時會使用和不會使用子主題的場景。
何時在WordPress中使用子主題(優(yōu)點)
您現(xiàn)在知道什么是子主題以及如何使用它們來覆蓋父主題中的模板文件或函數(shù)。
簡要回顧一下,如果您在網(wǎng)站上運(yùn)行主題并且想要執(zhí)行以下一項或多項操作,則應(yīng)使用子主題:
- 編輯一個或多個模板文件。
- 添加與顯示而非功能相關(guān)的額外功能。
- 覆蓋父主題中的一個或多個函數(shù)。
- 添加額外的模板文件。
一些優(yōu)點包括:
- 易于擴(kuò)展和定制:很明顯,子主題擴(kuò)展了其父主題的功能。您已經(jīng)有一個父主題形式的現(xiàn)成模板,您需要做的就是為您的子主題創(chuàng)建一個單獨的style.css文件,并根據(jù)您的需要添加自定義調(diào)整。
- 輕松更新:隨著 WordPress 的發(fā)展,主題和插件需要經(jīng)常更新。如果您對主要主題進(jìn)行自定義調(diào)整和更改,如果您更新主題,最終可能會丟失所有更改。因此,建議對子主題進(jìn)行此類更改,這樣即使您需要更新父主題,也不必?fù)?dān)心丟失更改。
當(dāng)您不使用子主題時呢?
何時不使用WordPress子主題(缺點)
有時您不會使用子主題,而應(yīng)該使用不同的方法來自定義您的網(wǎng)站。這些是:
- 如果您的主題是您自己開發(fā)的(或其他人為您編寫的)并且不需要在其他任何地方使用它。只需編輯主題,確保使用版本控制。
- 如果您要進(jìn)行的自定義具有功能性,例如添加自定義帖子類型,并且您希望在將來更改主題時保留它們。改用插件。
一些缺點包括:
- 選擇理想的父主題:并非所有主題都可以作為好父主題!例如,某些WordPress主題可能不會定期更新,因此往往缺乏最新的功能。同樣,并非所有WordPress主題都是在考慮子主題的情況下創(chuàng)建的,因此可能不適合父主題。您需要選擇完美的父主題,以便正確擴(kuò)展它并使其成為您子主題的基礎(chǔ)。
- 定制工作:子主題基本上尋求擴(kuò)展和定制現(xiàn)有模板設(shè)計。因此,如果您已經(jīng)圍繞父主題創(chuàng)建了一個網(wǎng)站,則在移動到子主題時,您可能需要重新考慮自定義元素,例如菜單、主題選項、側(cè)邊欄、標(biāo)題等。
現(xiàn)在您知道何時(以及何時不)使用子主題,是時候開始工作并學(xué)習(xí)如何在WordPress中創(chuàng)建子主題了。
現(xiàn)在您知道為什么應(yīng)該使用子主題,現(xiàn)在是創(chuàng)建一個的時候了。這個過程有點復(fù)雜,但我們將引導(dǎo)您完成每一步。
如何創(chuàng)建WordPress子主題
在創(chuàng)建子主題之前,您需要做一些準(zhǔn)備工作。首先,在執(zhí)行任何其他操作之前創(chuàng)建站點備份非常重要。這樣,您就可以處理您的主題,而不必?fù)?dān)心破壞您的網(wǎng)站或丟失其任何內(nèi)容。事實上,最好使用臨時站點來編輯和測試您的主題,而不是您的實時站點。
我們還建議您在開始之前熟悉CSS和PHP。雖然您不需要任何使用這些語言創(chuàng)建子主題的經(jīng)驗,但它肯定有助于編輯主題的過程?;〞r間了解這些關(guān)鍵語言的基礎(chǔ)知識將使您有一個良好的開端。
在WordPress中設(shè)置一個基本的子主題涉及創(chuàng)建兩個文件:樣式表和函數(shù)文件。
Step 1:為您的子主題創(chuàng)建一個文件夾
您需要的第一件事是為您的孩子主題生活的地方。但是,在此之前,您需要一種直接處理站點文件的方法。這通常意味著使用像FileZilla這樣的SFTP解決方案來訪問您的站點。
一旦你安裝和設(shè)置FileZilla中,您可以使用登錄你的虛擬主機(jī)提供的憑據(jù)。完成后,您將看到整個站點組織成一系列文件夾和文件。從這里,您需要導(dǎo)航到/wp-content/themes/,這是所有主題所在的位置。
右鍵單擊此文件夾內(nèi)的任意位置,然后選擇創(chuàng)建目錄。此文件夾將保存您的子主題,因此我們建議您以其父主題命名。例如,一個二〇一七的子主題可能被稱為twentyseventeen-child。
保存文件夾后,就可以開始向子主題添加內(nèi)容了。
Step 2:創(chuàng)建樣式表
層疊樣式表 (CSS)是一種定義HTML內(nèi)容外觀的語言。主題的CSS文件控制您網(wǎng)站上的文本、圖像、超鏈接和大多數(shù)其他內(nèi)容的外觀。當(dāng)我們談?wù)摳闹黝}的外觀時,我們通常談?wù)摰氖蔷庉嬈銫SS。
這聽起來可能很復(fù)雜,而且CSS確實為您提供了很多自定義選項。但是,現(xiàn)在您無需擔(dān)心具體細(xì)節(jié)。您需要做的就是創(chuàng)建CSS文件本身。您將在剛剛創(chuàng)建的子主題文件夾中執(zhí)行此操作。只需打開文件夾,右鍵單擊其中的任意位置,然后選擇創(chuàng)建新文件。
當(dāng)您被要求命名文件時,將其命名為style.css,注意使用確切的大小寫和拼寫(因為WordPress否則將無法識別該文件)。
該文件自然是空的,因此您需要為其提供一些內(nèi)容。要開始編輯文件,請右鍵單擊它并選擇查看/編輯。這將在您的默認(rèn)文本編輯程序中打開文件,例如TextEdit或記事本。
在創(chuàng)建文件之前,您需要創(chuàng)建一個文件夾來保存您的主題。這在WordPress安裝的wp-content/themes文件中。
在新主題的文件夾中,創(chuàng)建一個名為style.css的文件。添加以下內(nèi)容:
/* Theme Name: My Child Theme. Child for Twenty Nineteen. Theme URI: https://rachelmccollin.com Description: Theme to support tutsplus tutorial. Child theme for the Twenty Nineteen theme. Author: Rachel McCollin Textdomain: mccollin Author URI: https://rachelmccollin.com/ Template: twentynineteen Version: 1.0 License: GNU General Public License v2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html */
這段文字被注釋掉了。它不是在您的網(wǎng)站上運(yùn)行任何東西或提供任何功能的代碼。相反,它會告訴WordPress主題。每個主題中都需要這樣的文本,否則WordPress無法將其識別為主題。
讓我們通過每一行來確定它們的作用:
- Theme Name:主題的唯一名稱。
- Theme URI:用戶可以在其中找到主題的代碼或文檔。
- Description:幫助用戶理解主題的描述性文字。
- Author:你的名字
- Textdomain:用于國際化。在任何國際化函數(shù)中使用文本域作為第二個參數(shù)。
- Author URI:作者的網(wǎng)站。
- Template:存儲父主題的文件夾。使用文件夾名稱而不是主題名稱。沒有這一行,您的主題將無法作為子主題使用。
- Version:版本號
- License:許可證,必須是GNU。[關(guān)聯(lián)]
- License URI:許可證信息的鏈接。
子主題最重要的一行是Template: 行。沒有這個,主題將不能作為子主題工作。只有子主題將包含此行。
將此添加到您主題的樣式表中,對其進(jìn)行編輯以添加您自己的詳細(xì)信息而不是我的。您需要編輯Template: 行以添加存儲現(xiàn)有主題的文件夾,因為這將是您的父主題。
現(xiàn)在保存文件。如果您現(xiàn)在查看站點中的主題詳細(xì)信息屏幕,您會看到顯示的所有內(nèi)容:
WordPress中沒有截圖的主題頁面
這看起來不太好,因為沒有截屏。這是一張圖像,可以讓您了解主題的外觀。除非您的主題看起來與父主題非常不同,否則只需將screenshot.png文件從您的父主題復(fù)制到您的子主題。
帶有屏幕截圖的WordPress中的主題頁面
Step 3:引用父主題
到目前為止,您的主題已經(jīng)有了一個主頁和一些基本信息?,F(xiàn)在,是時候給它一些功能了。您可以通過創(chuàng)建一個函數(shù)文件來做到這一點。除其他外,此文件決定了主題的獨特功能。這是一個功能強(qiáng)大的工具,用途廣泛,但現(xiàn)在,您只需要創(chuàng)建它。
下一步是將函數(shù)文件添加到您的子主題。您需要它,以便您可以將來自父主題的樣式表排入隊列。沒有它,您的網(wǎng)站將根本沒有樣式,看起來像這樣:
我們的主頁沒有CSS
不好,我相信你會同意的!因此,讓我們添加樣式以使其看起來應(yīng)該如此。
在您的子主題文件夾中,添加一個名為functions.php的文件。打開它并添加以下代碼:
它使用
wp_enqueue_style()函數(shù)將來自父主題的樣式表排入隊列,get_template_directory_uri()函數(shù)定位該文件的存儲位置。該函數(shù)位于我創(chuàng)建的一個名為wbolt_parent_styles()的函數(shù)中,與wp_enqueue_scripts鉤子掛鉤。您可能想知道為什么它使用名為
wp_enqueue_scripts而不是的函數(shù)wp_enqueue_styles。這是因為wp_enqueue_scripts用于腳本和樣式,并且沒有像wp_enqueue_styles.隨意編輯我的代碼,將您自己的前綴添加到您的函數(shù)名稱中。我使用“childtheme”作為前綴,以確保我的函數(shù)不會與來自父主題或任何插件的任何其他函數(shù)發(fā)生沖突。
現(xiàn)在保存您的文件。
Step 4:啟用子主題
您的子主題現(xiàn)在可以使用了,所以您需要做的就是啟用它。最簡單的方法是通過WordPress管理界面。只需登錄,然后訪問外觀>主題。您應(yīng)該已經(jīng)在此處看到您的子主題:
此時,您只需要單擊“啟用”即可啟用您的主題。當(dāng)然,此時您可能不會注意到您的站點有任何差異。這是因為您實際上還沒有添加任何自定義。子主題仍然是一張白紙,等著你把它變成特別的東西。
正如我們之前提到的,您現(xiàn)在應(yīng)該花一些時間來了解有關(guān)CSS和PHP的更多信息。這將使您能夠使用內(nèi)置主題編輯器通過子主題向您的站點添加新樣式和功能。如果你想擴(kuò)展您的主題的功能,它也是一個聰明的想法,詳細(xì)了解了functions.php的文件。只需稍加努力,您就可以使用全新的子主題對 WordPress 網(wǎng)站進(jìn)行任何您想要的更改!
如何激活WordPress子主題
一旦您的子主題準(zhǔn)備就緒,您就需要激活它。如果您擔(dān)心激活子主題會關(guān)閉父主題,請不要擔(dān)心:WordPress會知道使用父主題中的文件,除非您向子主題添加新文件來覆蓋它們。到目前為止,您還沒有向子主題添加任何額外的文件或功能,因此您的站點的工作方式與激活父主題時完全相同。
請記?。菏紫仍谀拈_發(fā)或臨時站點上執(zhí)行此操作。在您測試之前,不要在您的實時站點上激活您的子主題。
在WordPress管理中,轉(zhuǎn)到外觀 > 主題。您會發(fā)現(xiàn)您的子主題列在您網(wǎng)站上安裝的主題中。
將鼠標(biāo)懸停在主題上,然后單擊“激活” 按鈕。這將激活您的子主題。現(xiàn)在,當(dāng)您訪問您的實時站點時,它看起來和以前一樣:
網(wǎng)站首頁
它看起來相同,因為您尚未添加任何自定義。但是你現(xiàn)在有一個工作子主題。做得好!
如何在WordPress中自定義子主題
現(xiàn)在您的WordPress網(wǎng)站有了一個可用的子主題,是時候添加您的自定義設(shè)置了。在這里,我將向您展示如何添加模板文件以覆蓋父主題上的模板文件、如何為子主題添加樣式以及如何添加新功能。
讓我們從模板文件開始。
如何將模板文件添加到您的WordPress子主題
我們已經(jīng)了解了WordPress在您的網(wǎng)站上顯示內(nèi)容時如何選擇要使用的模板文件。有兩件事要記住:
- WordPress將使用層次結(jié)構(gòu)中最先出現(xiàn)的文件,無論是來自子主題還是父主題。
- 如果父主題和子主題中都存在同名的模板文件(或模板部分,例如header.php),WordPress將使用子主題中的一個。
要添加自定義,我發(fā)現(xiàn)首先從父主題制作相關(guān)文件的副本,將其添加到子主題,然后編輯它更容易。
這適用于您的子主題中的文件是否與父主題中的命名文件相同,或者它是用于顯示不同內(nèi)容類型的新文件,還是層次結(jié)構(gòu)中更高的文件。
因此,如果我將新版本的page.php添加到我的子主題中,這將覆蓋我父主題中的page.php,我會將page.php從我的父主題復(fù)制到我的子主題,然后對其進(jìn)行編輯。確保復(fù)制文件:不要移動它,因為您不想對父主題進(jìn)行任何更改。
例如,如果我想要在我的子主題中使用自定義頁面模板,我會將page.php復(fù)制到我的子主題,重命名它,然后對其進(jìn)行編輯。
這樣,您可以確保不需要自定義的文件的所有方面仍然可以正常工作。這同樣適用于模板部件。
如何為您的WordPress子主題添加樣式
您還可以向子主題的style.css文件添加樣式,這將增強(qiáng)或覆蓋父主題樣式表中的樣式。
WordPress將首先從父主題調(diào)用樣式表,然后從子主題調(diào)用樣式表。這意味著如果您將樣式添加到與父主題中的樣式相同的元素的子主題,只要您使用相同的選擇器,它就會覆蓋父主題的樣式。
因此,假設(shè)您想更改站點標(biāo)題的顏色。在父主題中,這可能是這樣的:
h1.site-title {
color: #000;
}
要在您的子主題中覆蓋它,您可以添加以下內(nèi)容:
h1.site-title {
color: #303030;
}
由于瀏覽器會在父主題中的樣式之后遇到這個,它將覆蓋它并被使用。
如何為WordPress子主題添加函數(shù)
因此,您在WordPress中創(chuàng)建了子主題并不是因為您想要編輯任何模板文件,而是因為您想要添加額外的功能或覆蓋父主題中的一個或多個功能。
在子主題中編寫函數(shù)比添加模板文件要復(fù)雜一些,但這是可能的。
如果您想添加一個不與父主題中的任何功能交互的新功能,您可以繼續(xù)這樣做。只需將該函數(shù)添加到子主題中的functions.php文件中,將其掛接到相關(guān)的操作或過濾器掛鉤上,就可以了。
但是,如果您計劃覆蓋或編輯父主題中的函數(shù),則需要了解可用于執(zhí)行此操作的方法。您可以通過三種方式覆蓋子主題中的父主題功能:
- 如果父主題中的主題是可插入的,您只需在子主題中編寫另一個具有相同名稱的函數(shù),WordPress將運(yùn)行該函數(shù)而不是父主題中的函數(shù)。
- 如果你想完全停止父主題中的函數(shù)運(yùn)行,你可以在你的子主題中編寫一個函數(shù),將它從它所附加的鉤子中解開。
- 如果您想擴(kuò)充一個函數(shù),您可以在您的子主題中添加另一個函數(shù)(具有不同的名稱),并確保它在父主題中的函數(shù)之后運(yùn)行。
讓我們仔細(xì)看看你是如何做到的。
覆蓋可插入函數(shù)
可插拔函數(shù)由環(huán)繞在它周圍的條件檢查標(biāo)識。這將檢查是否有另一個同名的函數(shù)已經(jīng)被觸發(fā)。如果是這樣,它不會運(yùn)行該功能。
WordPress將在來自父主題的函數(shù)之前觸發(fā)來自您的子主題的函數(shù)。如果它在父主題中遇到一個可插拔函數(shù),并且您已向子主題添加了一個同名的函數(shù),則該可插拔函數(shù)將不會運(yùn)行。
一個示例是在WooCommerce站點的Storefront主題中輸出版權(quán)頁的函數(shù)。這是沒有內(nèi)容的函數(shù):
if ( ! function_exists( 'storefront_credit' ) ) {
function storefront_credit() {
// contents for function here
}
}
如果您想覆蓋它,您可以編寫另一個具有相同名稱 ( storefront_credit()) 的函數(shù)并將其掛接到與父主題相同的鉤子上。
從父主題中解開函數(shù)
如果父主題的函數(shù)不可插入,您仍然可以阻止它運(yùn)行。假設(shè)您的父主題有一個名為parent_function()的函數(shù),函數(shù)init以20的優(yōu)先級掛接到鉤子上。您想阻止它運(yùn)行,以便您可以用自己的函數(shù)替換它。
下面是父主題函數(shù)的樣子:
function parent_function() {
//contents of function here
}
add_action( ‘init’, ‘parent_function’, 20 );
要解開它,您可以在您的子主題中對此進(jìn)行編碼:
function remove_parent_function() {
remove_action( ‘init’, ‘parent_function’, 20 );
}
add_action( ‘wp_head’, ‘remove_parent_function’ );
請注意,您將第二個函數(shù)掛接到在每個頁面頂部運(yùn)行的wp_head掛鉤,并且您必須包含與原始函數(shù)中相同的優(yōu)先級參數(shù)值。如果原始add_action()函數(shù)沒有優(yōu)先級,您可以從子主題的remove_action()函數(shù)中省略它。
注意:如果原始函數(shù)被掛鉤到過濾器掛鉤而不是動作掛鉤,則您將以remove_filter()相同的方式使用。
用另一個函數(shù)擴(kuò)充一個函數(shù)
有時您可能想要添加到它而不是覆蓋或刪除函數(shù)。在這種情況下,您將編寫一個具有不同名稱的新函數(shù),并將其附加到同一個鉤子上。
假設(shè)您的父主題中的頁腳有一個名為parent_footer. 您附加到該鉤子的任何函數(shù)都將在該鉤子所在的位置運(yùn)行。
在父主題中,已經(jīng)有一個parent_footer_content()用于填充頁腳的函數(shù)。但是如果你想給它添加一些額外的代碼怎么辦?
以下是該parent_footer_content()函數(shù)在父主題中的樣子:
function parent_footer_content() {
// content of function here
}
add_action( ‘parent_footer’, ‘parent_footer_content’ );
現(xiàn)在,如果您想在那之后添加其他內(nèi)容,您將在您的子主題中創(chuàng)建一個函數(shù),掛鉤到同一個動作鉤子,優(yōu)先級意味著它在第一個函數(shù)之后運(yùn)行。由于未為父主題的功能設(shè)置優(yōu)先級,因此默認(rèn)為10。因此您需要使用更高的數(shù)字,以便在此之后觸發(fā)。
function child_footer_extra_content() {
// contents of function here
}
add_action( ‘parent_footer’, ‘child_footer_extra_content’, 20 );
這將在來自父主題函數(shù)的代碼之后添加來自子主題函數(shù)的代碼。
如何對子主題和父主題進(jìn)行故障排除
所以現(xiàn)在您知道如何在WordPress中創(chuàng)建子主題以及如何使用它來覆蓋模板文件、添加額外樣式以及為您的站點添加功能。
但是,如果您的子主題沒有按預(yù)期工作怎么辦?如果內(nèi)容沒有按照您預(yù)期的方式顯示,或者函數(shù)沒有觸發(fā)怎么辦?
使用此清單對您的子主題進(jìn)行故障排除:
希望這些步驟中的一個或多個步驟可以幫助您識別問題并在您的子主題中修復(fù)它。記?。?strong>不要直接編輯父主題。
使用WordPress子主題時的有用提示
子主題是一個非常重要的話題,也是WordPress一個非常有價值的功能。我在我建立的每個網(wǎng)站上都使用它們。
為了幫助您找到最有效地利用子主題所需的方法,以下是我的提示,可幫助您解決這些問題:
- 如果您需要編輯第三方主題,請始終使用子主題。這樣,當(dāng)您更新主題時,您的更改不會丟失。
- 每個子主題都需要一個樣式表和一個函數(shù)文件。
- WordPress將使用模板層次結(jié)構(gòu)來確定在輸出內(nèi)容時使用哪個模板文件。如果它找到兩個同名的文件,它將使用子主題中的一個。
- 您可以通過在子主題中編寫具有相同名稱的函數(shù)來覆蓋父主題中的可插入函數(shù)。
- 您可以使用子主題中的函數(shù)
remove_action()或remove_filter()從父主題中解開函數(shù),然后編寫新函數(shù)。 - 您可以通過在子主題中編寫一個函數(shù)并將其連接到相同的動作或過濾器鉤子來擴(kuò)充父主題中的函數(shù)。
- 上傳后不要忘記激活您的子主題。并確保沒有人從您的WordPress安裝中刪除父主題:沒有它,子主題將無法工作。
小結(jié)
創(chuàng)建子主題是在不承擔(dān)任何相關(guān)風(fēng)險的情況下修改主題的最佳方式。使用此過程,您幾乎可以更改網(wǎng)站外觀和布局方面的任何內(nèi)容。更重要的是,您將能夠立即創(chuàng)建您的子主題。
子主題是 WordPress 的一項有用功能,可讓您自定義主題而無需直接編輯其代碼。您可以使用一個來向主題添加附加功能、自定義樣式或創(chuàng)建/編輯模板文件。
如果您遵循上述建議,您將能夠按照最佳實踐在 WordPress 中創(chuàng)建子主題,并利用它們完成各種任務(wù)。當(dāng)您更新父主題時,所有這些都不會丟失您的更改和自定義。
文章題目:如何開發(fā)一款WordPress子主題
文章起源:http://m.fisionsoft.com.cn/article/dhjoeio.html


咨詢
建站咨詢
