WordPress自定義文章類型:創(chuàng)建和使用它們的多合一指南
wordpress自定義文章類型是強(qiáng)大的功能。它們將WordPress從一個(gè)不起眼的博客工具提升為一個(gè)內(nèi)容管理系統(tǒng),并為您提供創(chuàng)建定制網(wǎng)站所需的最重要的靈活性。
但它們可能會(huì)引起混淆:WordPress自定義文章類型到底是什么?它們與標(biāo)準(zhǔn)文章和頁面有何不同?你如何創(chuàng)造它們?一旦你創(chuàng)建了一個(gè)自定義的文章類型,你如何添加它,在你的網(wǎng)站上顯示它,以及它是如何被WordPress存儲(chǔ)的?
在本文中,我將向您展示W(wǎng)ordPress自定義文章類型的工作原理。我會(huì)將它們與您可能更熟悉的文章類型進(jìn)行比較,教您如何創(chuàng)建它們,并向您展示如何使用主題模板文件在您的站點(diǎn)中顯示它們。
- 什么是WordPress自定義文章類型?
- 文章和自定義文章類型之間的區(qū)別
- 如何使用插件添加自定義文章類型
- 如何在WordPress中注冊(cè)您自己的自定義文章類型
- 如何在您的網(wǎng)站中顯示W(wǎng)ordPress自定義文章類型
什么是WordPress中的自定義文章類型?
通過解釋一個(gè)更廣泛的概念:文章類型,可能更容易解釋W(xué)ordPress中的自定義文章類型。
文章類型是在WordPress中對(duì)不同類型的內(nèi)容進(jìn)行分類的方法。我假設(shè)您已經(jīng)熟悉兩種最常見的文章類型:文章和頁面。但您可能不知道的是,WordPress還捆綁了其他一些文章類型。
與WordPress捆綁的文章類型
WordPress有七種文章類型:
- 文章
- 頁面
- 附件
- 修訂
- 導(dǎo)航菜單
- 自定義CSS
- 變更集Changesets
您可能從未聽說過變更集Changesets,并且您可能會(huì)在您的網(wǎng)站中使用自定義CSS,但您沒有想到這些可能是文章類型。
對(duì)于大多數(shù)WordPress用戶和開發(fā)人員來說,您唯一需要關(guān)注的文章類型是前五種:文章、頁面、附件、修訂和導(dǎo)航菜單。
讓我們看一下這些文章類型中的每一個(gè),以便我們了解更多關(guān)于它們的信息。
WordPress文章類型:文章
“文章”是您在WordPress中使用最多的文章類型。文章是動(dòng)態(tài)內(nèi)容:旨在定期更新。您可以向它們添加類別和標(biāo)簽,這意味著它們將顯示在多個(gè)存檔頁面中,并且它們也將顯示在您的主頁或博客頁面上。通常,您的文章將構(gòu)成您網(wǎng)站上的大部分內(nèi)容。
注意:在 WordPress 中,“發(fā)布”意味著兩件事。在數(shù)據(jù)庫中,文章是任何文章類型的文章,因此它將包括頁面、附件和其他所有內(nèi)容。當(dāng)我們大多數(shù)人談?wù)撐恼聲r(shí),我們指的是我們博客中的文章,屬于“文章”文章類型。
WordPress文章類型:頁面
如果您已經(jīng)有一個(gè)WordPress網(wǎng)站,頁面是您熟悉的另一種內(nèi)容類型。它們是靜態(tài)內(nèi)容,旨在比文章停留更長(zhǎng)時(shí)間,并提供有關(guān)不經(jīng)常更改的事物的信息。很好的例子是您的聯(lián)系方式或商業(yè)網(wǎng)站上的“關(guān)于我們”頁面。
頁面不能有類別或標(biāo)簽,也不能顯示在存檔頁面上。相反,訪問者將通過您的導(dǎo)航菜單訪問它們。
注意:在互聯(lián)網(wǎng)術(shù)語中,頁面可以表示您網(wǎng)站上的任何類型的頁面?;ヂ?lián)網(wǎng)最初發(fā)展時(shí),它僅包含必須通過編寫HTML直接編碼的靜態(tài)內(nèi)容。因此,“網(wǎng)頁”可以是您網(wǎng)站上的任何類型的頁面,包括WordPress術(shù)語中的靜態(tài)頁面、存檔頁面或文章。在本文中,當(dāng)我提到頁面時(shí),我指的是WordPress術(shù)語中的頁面,即靜態(tài)頁面。有時(shí)我會(huì)提到存檔頁面,但它們不是您創(chuàng)建一個(gè)頁面來存儲(chǔ)它們的意義上的頁面。WordPress為您做到這一點(diǎn)。
WordPress文章類型:附件
附件是已上傳到您網(wǎng)站的媒體項(xiàng)目。在WordPress數(shù)據(jù)庫中,這不是媒體文件本身,而是與之相關(guān)的數(shù)據(jù)。因此,每個(gè)附件都將具有唯一的ID和元數(shù)據(jù),例如其標(biāo)題、描述、ALT文本等。
每個(gè)附件也有自己的附件頁面,帶有唯一的URL。您可以通過該附件的媒體編輯屏幕找到此URL:
WordPress中的附件編輯屏幕
附件可以是任何類型的上傳:圖像、視頻、pdf文件等等。您可以通過WordPress管理菜單中的媒體項(xiàng)訪問和編輯它們,也可以在編輯它們時(shí)將它們直接上傳到文章/頁面。您上傳到文章的任何附件都可以通過“媒體?”菜單進(jìn)行編輯和查看。
WordPress文章類型:修訂
現(xiàn)在我們開始討論稍微晦澀的文章類型。
每次您保存新版本的文章、頁面、附件或任何自定義文章類型時(shí),WordPress都會(huì)創(chuàng)建一個(gè)修訂版以反映該文章(或頁面等)的版本。
您可以通過轉(zhuǎn)到相關(guān)編輯屏幕并打開右側(cè)的“文檔”?選項(xiàng)卡來查看對(duì)站點(diǎn)中任何文章或頁面的修訂。在這里,您會(huì)看到一條通知,告訴您這篇文章有多少次修訂。您可以在下面看到我正在編輯的文章的屏幕截圖,該文章目前有五個(gè)修訂版。
WordPress文章編輯屏幕中的修訂
如果您不使用古騰堡編輯器,您可以通過滾動(dòng)到編輯屏幕底部并在此處找到它們的列表來訪問修訂:
經(jīng)典WordPress文章編輯屏幕中的修訂
如果您單擊“修訂?”框,您將被帶到一個(gè)屏幕,顯示您最新的兩個(gè)版本的文章。從這里您可以查看修訂并恢復(fù)到文章的早期版本。
隨著時(shí)間的推移,WordPress會(huì)為您的網(wǎng)站創(chuàng)建大量修訂,這意味著數(shù)據(jù)庫將充滿它們(這是關(guān)于如何處理修訂版本以獲得更快性能的指南)!但是修訂版本是一種文章類型,就像其他任何類型一樣,它們以相同的方式存儲(chǔ)——很快就會(huì)有更多。
導(dǎo)航菜單,或者更準(zhǔn)確地說,導(dǎo)航菜單中的項(xiàng)目,也是一種文章類型。
導(dǎo)航菜單中的每個(gè)項(xiàng)目都作為一個(gè)項(xiàng)目存儲(chǔ)在數(shù)據(jù)庫中。由于其元數(shù)據(jù),WordPress知道這是一個(gè)導(dǎo)航菜單項(xiàng),它應(yīng)該出現(xiàn)在導(dǎo)航菜單中的確切位置以及鏈接到的位置。
您不能像編輯其他文章類型一樣編輯導(dǎo)航菜單項(xiàng)。相反,您可以通過定制器或菜單屏幕來編輯它們。
WordPress文章類型:自定義CSS
如果您通過定制器添加自定義CSS,您的工作將使用此自定義文章類型保存。將為與您網(wǎng)站中的每個(gè)主題相關(guān)的自定義CSS保存一個(gè)新文章(“自定義CSS”文章類型),并且WordPress只會(huì)將一個(gè)用于當(dāng)前活動(dòng)的主題。
WordPress文章類型:變更集
變更集有點(diǎn)像修訂,但它們不是應(yīng)用于文章,而是應(yīng)用于定制器。當(dāng)您使用定制器進(jìn)行更改時(shí),它將以類似于草稿的方式保存為更改集。
現(xiàn)在我們已經(jīng)了解了所有WordPress文章類型,讓我們繼續(xù)了解有關(guān)WordPress自定義文章類型的更多信息。
文章和自定義文章類型之間的區(qū)別
讓我們快速回顧一下:文章可以是兩件事之一。
文章類型是給定內(nèi)容項(xiàng)所屬的文章類型(在更廣泛的意義上)?!拔恼隆笔且环N文章類型,就像“頁面”、“附件”或您注冊(cè)的任何自定義文章類型一樣(我知道,這很令人困惑,但我會(huì)在一分鐘內(nèi)深入挖掘)。
另一方面,您的自定義文章類型不是博客文章意義上的“文章”類型。它是存儲(chǔ)在數(shù)據(jù)庫中的所有文章(所有文章類型)意義上的一種文章。
WordPress自定義文章類型:常見用途
所以現(xiàn)在我們知道什么是自定義文章類型了。但是什么時(shí)候你可能需要使用一個(gè)?答案是每當(dāng)您想向您的網(wǎng)站添加不適合其中一種內(nèi)置文章類型的內(nèi)容時(shí)。
自定義文章類型的一些常見示例是:
- 電子商務(wù)網(wǎng)站的產(chǎn)品。
- 作品集網(wǎng)站的作品或項(xiàng)目。
- 地圖位置站點(diǎn)的地圖。
- 預(yù)訂網(wǎng)站的活動(dòng)。
這些是一些最常見的用例,但絕不是唯一的用例。在決定是否對(duì)任何新內(nèi)容使用自定義文章類型時(shí),我的建議是問自己這個(gè)問題:
我想在主博客頁面或靜態(tài)頁面中顯示我的新內(nèi)容,還是希望能夠在單獨(dú)的存檔頁面上顯示它?
在某些情況下,使用一個(gè)類別來分離您的新內(nèi)容可能就足夠了:也許您正在運(yùn)行一個(gè)博客并希望包含可以在他們自己的頁面上顯示的案例研究(使用您創(chuàng)建的“案例研究”類別)并顯示在主博客中。但是,如果您想將新內(nèi)容與博客文章分開,那么為它創(chuàng)建自定義文章類型是有意義的。
WordPress如何存儲(chǔ)文章類型
自定義文章類型的文章的存儲(chǔ)方式與標(biāo)準(zhǔn)文章(和頁面等)的存儲(chǔ)方式相同。讓我們更詳細(xì)地看一下這個(gè)。
您的WordPress站點(diǎn)有許多用于存儲(chǔ)內(nèi)容和設(shè)置的數(shù)據(jù)庫表。表的最小數(shù)量是 12,但是如果您的站點(diǎn)運(yùn)行多語言站點(diǎn)或者如果您安裝了添加更多表的插件,您的站點(diǎn)可能會(huì)有更多。
WordPress數(shù)據(jù)庫表
在上面的屏幕截圖中,您可以看到有兩個(gè)表看起來好像與文章有關(guān):wp_posts和wp_postmeta。
wp_posts表存儲(chǔ)所有文章類型的所有文章內(nèi)容。因此,無論我們談?wù)摰氖遣┛臀恼?、頁面、修訂、附件還是自定義文章類型都沒有關(guān)系:它們都將存儲(chǔ)在這個(gè)wp_posts表中。
WordPress知道每個(gè)文章的文章類型,因?yàn)樗鼤?huì)在wp_posts表的post_type字段中有一個(gè)值。該值將對(duì)應(yīng)于文章類型的名稱。因此,當(dāng)您添加新的博客文章時(shí),WordPress會(huì)在wp_posts表中添加一個(gè)post_type為“post”的文章。例如,如果您注冊(cè)了一個(gè)名為“product”的自定義文章類型,那么您創(chuàng)建的每個(gè)新產(chǎn)品都會(huì)在wp_posts表中生成一行,其中“product”作為post_type字段中的值。
wp_postmeta表用于存儲(chǔ)有關(guān)您的文章的元數(shù)據(jù)。它有四個(gè)字段:
- meta_id:wp_postmeta表中該項(xiàng)的id。
- post_id:該項(xiàng)元數(shù)據(jù)對(duì)應(yīng)的文章。一篇文章在wp_postmeta表中可以有多行。
- meta_key:此特定類型元數(shù)據(jù)的密鑰。例如,對(duì)于靜態(tài)頁面,一個(gè)潛在的鍵可能是page_template,它會(huì)記錄正在使用的頁面模板。
- meta_value:字段的值。如果頁面(再次使用此示例)正在使用默認(rèn)頁面模板,則此處的meta_value將為“default”。
因此,為給定文章存儲(chǔ)的元數(shù)據(jù)種類將根據(jù)它的文章類型而有所不同。
您無需擔(dān)心哪些數(shù)據(jù)存儲(chǔ)在wp_posts中,哪些存儲(chǔ)在wp_postmeta中:但了解所有文章類型都存儲(chǔ)在同一個(gè)位置很有用,因?yàn)檫@意味著WordPress可以以幾乎相同的方式處理它們大大地。
自定義文章類型存儲(chǔ)在WordPress中的什么位置?
您的WordPress站點(diǎn)有許多用于存儲(chǔ)內(nèi)容和設(shè)置的數(shù)據(jù)庫表。例如,如果您注冊(cè)了一個(gè)名為“case study”的自定義文章類型,那么您創(chuàng)建的每個(gè)新案例研究都會(huì)在wp_posts表中生成一行,其中“product”作為post_type字段中的值。
WordPress知道每個(gè)文章的文章類型,因?yàn)樗鼤?huì)在wp_posts表的post_type字段中有一個(gè)值。
自定義文章類型如何與自定義分類法和自定義字段交互
在我們繼續(xù)研究如何在WordPress中注冊(cè)自定義文章類型之前,讓我們確定自定義文章類型將如何與其他自定義內(nèi)容類型交互,即自定義分類法和自定義字段。
自定義分類法
WordPress中的分類法用于對(duì)任何文章類型的文章進(jìn)行分類。對(duì)于標(biāo)準(zhǔn)文章,使用的兩種分類法是類別和標(biāo)簽。
注冊(cè)自定義文章類型時(shí),您可以選擇為其分配任何現(xiàn)有的分類法或分類法。您可以在注冊(cè)分類時(shí)為其添加“category”分類。當(dāng)我演示創(chuàng)建自定義文章類型的技術(shù)時(shí),我將很快向您展示如何執(zhí)行此操作。
或者,您可以為您的自定義文章類型創(chuàng)建全新的分類法,這也是一種常用方法。
因此,例如,如果您正在為電子商務(wù)網(wǎng)站創(chuàng)建 “product”文章類型,您可能會(huì)創(chuàng)建“department”?分類來將產(chǎn)品分類到商店中的部門。
如果您正在創(chuàng)建 “event” 文章類型,則可以創(chuàng)建?“event type”分類,它可以指定這是一場(chǎng)音樂會(huì)、詩歌朗誦還是喜劇之夜。
您創(chuàng)建的分類法取決于您,并且取決于您希望從自定義文章類型對(duì)文章進(jìn)行排序和顯示的方式。
自定義字段
您在WordPress中擁有的另一種自定義內(nèi)容類型是自定義字段,也稱為文章元數(shù)據(jù)。自定義字段是您可以添加到任何文章的附加元數(shù)據(jù),只要文章類型支持它們。當(dāng)您注冊(cè)自定義文章類型時(shí),您可以在此行中包含自定義字段支持:
supports => array( ‘custom-fields’ );
這是作為數(shù)組傳遞的,以便您可以添加對(duì)多個(gè)選項(xiàng)的支持。
因此,如果您想將元數(shù)據(jù)添加到您的自定義文章類型,例如服裝店中具有“product”文章類型的尺寸或顏色,您將使用自定義字段來執(zhí)行此操作。
自定義字段不同于自定義分類法,因?yàn)槟粫?huì)使用它們來輸出存檔頁面。
這是一家服裝店的示例。您將為“department”分類的每個(gè)示例創(chuàng)建一個(gè)存檔頁面,例如“Women’s”、“Men’s”等。假設(shè)您還有一個(gè)名為“Size”的自定義字段。您不會(huì)為每種尺寸創(chuàng)建存檔頁面,因?yàn)檫@不是您的客戶希望看到的。
遵循此規(guī)則可幫助您確定是否需要使用自定義分類法或自定義字段來向您的文章添加更多數(shù)據(jù):您是否需要在存檔頁面中顯示它?
稍后我將向您展示如何為您的自定義文章類型和自定義分類法輸出存檔頁面。
如何使用插件添加自定義文章類型
因此,您知道自定義文章類型是什么,并且您知道您的網(wǎng)站需要一個(gè):如何添加它?
有兩種方法:使用插件和手動(dòng)編碼。讓我們從插件路由開始。
您可以使用兩種類型的插件來注冊(cè)自定義文章類型:第一種將注冊(cè)自定義文章類型以添加??插件附帶的功能,第二種將為您提供可用于創(chuàng)建您的自己的文章類型。
第一個(gè)示例包括各種插件,包括電子商務(wù)插件、事件插件等。讓我們從最受歡迎的WordPress插件之一WooCommerce開始。
如何使用WooCommerce注冊(cè)自定義文章類型
WooCommerce是一個(gè)注冊(cè)自定義文章類型以便工作的插件示例。在這種情況下,它是“product”文章類型。
WooCommerce中列出的產(chǎn)品
WooCommerce還為您注冊(cè)了一些自定義分類和自定義字段來組織您的商店,包括產(chǎn)品類別和產(chǎn)品標(biāo)簽。這些與您用于博客文章的類別和標(biāo)簽不同。
如何使用Events Calendar插件注冊(cè)自定義文章類型
事件日歷插件是另一個(gè)使用自定義文章類型的插件。在這種情況下,它是“event”文章類型。
Events Calendar插件創(chuàng)建的event
該插件添加了事件獨(dú)有的分類法:“event category”。它也將普通標(biāo)簽應(yīng)用于事件,因此您可以使用與博客文章相同的標(biāo)簽。
如何使用WP Google Maps注冊(cè)自定義文章類型
就像WooCommerce和The Events Calendar一樣,WP Google Maps是一個(gè)WordPress地圖插件,可為您的地圖注冊(cè)自定義文章類型。
由WP Google Maps插件創(chuàng)建的地圖
“map”文章類型與之前插件中的產(chǎn)品或活動(dòng)文章類型的工作方式不同,因?yàn)槟粫?huì)顯示所有地圖的存檔頁面:相反,該插件為您創(chuàng)建的每個(gè)地圖提供了一個(gè)短代碼,您嵌入進(jìn)入您網(wǎng)站的文章或頁面。但是,盡管您無法像查看其他一些文章類型一樣查看地圖,但它仍然是一種文章類型。
如何使用Custom Post Type UI插件
如果您想注冊(cè)自己的自定義文章類型,而不是作為WooCommerce等插件提供的更廣泛功能的一部分,您可以使用為您提供界面的插件,該界面旨在使注冊(cè)自定義文章類型變得容易。
一個(gè)這樣的插件是Custom Post Type UI插件。
Custom Post Type UI插件
該插件允許您使用管理屏幕注冊(cè)自己的自定義文章類型,而無需編寫任何代碼。
它為您提供了一組屏幕,可讓您添加注冊(cè)文章類型的所有元素,您將在使用register_post_type()
函數(shù)時(shí)添加這些元素。要使用插件添加新的文章類型,請(qǐng)轉(zhuǎn)到CPT IU > Add/Edit Post Types。
使用Custom Post Type UI插件添加文章類型
從這里,您可以添加新的文章類型或編輯您已注冊(cè)的任何現(xiàn)有文章類型。
您可以編輯文章類型的設(shè)置,也可以將它們保留為默認(rèn)設(shè)置。您可以在WordPress Codex中找到有關(guān)文章類型的所有設(shè)置和選項(xiàng)的完整文檔。
Custom Post Type UI插件的設(shè)置
您還可以使用該插件注冊(cè)自定義分類并將其分配給您的新文章類型或任何現(xiàn)有文章類型。當(dāng)您使用該插件注冊(cè)文章類型時(shí),您可以為它分配任何現(xiàn)有的分類法。
如何使用Pods插件注冊(cè)自定義文章類型
Pods插件是另一個(gè)插件,它為您提供了一個(gè)界面,旨在讓您無需編寫代碼即可注冊(cè)自定義文章類型。
Pods還允許您擴(kuò)展現(xiàn)有的文章類型。因此,您可以向現(xiàn)有文章類型或分類添加額外字段,并編輯其設(shè)置。
使用Pods插件創(chuàng)建文章類型
Pods插件使用文章類型(“pod”)來存儲(chǔ)您的所有自定義設(shè)置,并且還允許您注冊(cè)自己的文章類型,有點(diǎn)像Custom Post Type UI插件,但其界面旨在引導(dǎo)您完成整個(gè)過程. 這意味著該插件可以使該過程更容易,但與您自己編寫文章類型相比,它向您的站點(diǎn)(以及向您的數(shù)據(jù)庫中的數(shù)據(jù))添加了更多的代碼。
或者,如果您不想安裝插件來管理注冊(cè)文章類型的過程,您可以自己編寫代碼。
如何在WordPress中注冊(cè)您自己的自定義文章類型
如果您喜歡編寫代碼,您可以利用register_post_type()
函數(shù)來注冊(cè)您的自定義文章類型。這是最有效的方法。
最佳實(shí)踐告訴我們將自定義文章類型的代碼放在插件中,而不是在您的主題中。這是因?yàn)槿绻鷮硪闹黝},您將不希望丟失文章類型以及您使用該文章類型創(chuàng)建的所有文章。這也意味著如果您將來更新主題,您將不會(huì)丟失您的文章類型。
讓我們完成在WordPress中注冊(cè)您自己的自定義文章類型的步驟。
創(chuàng)建你的插件
第一步是創(chuàng)建你的插件。在您的開發(fā)或臨時(shí)站點(diǎn)(還不是您的實(shí)時(shí)站點(diǎn))的wp-content/plugins文件夾中,為您的插件添加一個(gè)文件夾。在該文件夾中,添加一個(gè)PHP文件。比如wbolt-register-posttype.php。
提示:我總是喜歡在文件夾中創(chuàng)建插件,而不是僅僅將插件文件添加到wp-content/plugins文件夾中。這樣,如果我需要向我的插件添加更多文件,例如包含文件、腳本或樣式,我已經(jīng)準(zhǔn)備好一個(gè)文件夾來保存它們。
現(xiàn)在在您的新php文件中,為您的插件添加開頭注釋掉的文本:
這會(huì)告訴WordPress(和用戶)有關(guān)插件的一些關(guān)鍵信息:
- 它叫什么
- 在哪里可以找到更多信息
- 它能做什么
- 版本號(hào)
- 誰開發(fā)了它,你可以在哪里找到更多關(guān)于它們的信息
- 國(guó)際化的文本域
- 許可證,應(yīng)始終為GPL。
所以你的插件現(xiàn)在已經(jīng)設(shè)置好了,如果你愿意,你可以在管理屏幕中激活它。如果你這樣做,它不會(huì)做任何事情。
為您的文章類型設(shè)置函數(shù)
現(xiàn)在讓我們開始創(chuàng)建函數(shù)來注冊(cè)您的文章類型。在我的示例中,我將創(chuàng)建一個(gè)名為“book”的文章類型,因?yàn)檫@是一個(gè)虛構(gòu)的書評(píng)網(wǎng)站。您使用的內(nèi)容顯然會(huì)有所不同,并且取決于您使用自定義文章類型的目的。
在注釋掉的文本下方,添加以下內(nèi)容:
function wbolt_register_post_type() { } add_action( 'init', 'wbolt_register_post_type' );
此函數(shù)將包含您的自定義文章類型的所有代碼。您可能想要更改其名稱以添加您自己的前綴而不是wbolt_。最好在所有函數(shù)上使用前綴,這樣您就不會(huì)與主題或正在運(yùn)行的其他插件提供的任何函數(shù)的名稱發(fā)生沖突。
其余代碼將添加到該函數(shù)的大括號(hào)內(nèi)。
為您的自定義文章類型定義標(biāo)簽
現(xiàn)在是時(shí)候?yàn)槟淖远x文章類型定義標(biāo)簽了,在這些花括號(hào)內(nèi),添加以下內(nèi)容:
$labels = array( 'name' => __( ‘Books’, ‘wbolt’ ), 'singular_name' => __( 'Book', ‘wbolt’ ), 'add_new' => __( 'New Book', ‘wbolt’ ), 'add_new_item' => __( 'Add New Book', ‘wbolt’ ), 'edit_item' => __( 'Edit Book', ‘wbolt’ ), 'new_item' => __( 'New Book', ‘wbolt’ ), 'view_item' => __( 'View Books', ‘wbolt’ ), 'search_items' => __( 'Search Books', ‘wbolt’ ), 'not_found' => __( 'No Books Found', ‘wbolt’ ), 'not_found_in_trash' => __( 'No Books found in Trash', ‘wbolt’ ), );
如果您的自定義文章類型不是“book”,則需要更改您的。您可以使用更多標(biāo)簽,但我發(fā)現(xiàn)上面的標(biāo)簽往往足以滿足我的需求。
請(qǐng)注意,我在標(biāo)簽中使用了國(guó)際化,因此它們將被翻譯成用戶的本地語言。
為您的自定義文章類型定義參數(shù)
下一步是定義參數(shù),其中一個(gè)是我們已經(jīng)添加的標(biāo)簽數(shù)組。
在標(biāo)簽下方且仍在這些大括號(hào)內(nèi),添加以下內(nèi)容:
$args = array( 'labels' => $labels, 'has_archive' => true, 'public' => true, 'hierarchical' => false, 'supports' => array( 'title', 'editor', 'excerpt', 'custom-fields', 'thumbnail', 'page-attributes' ), 'taxonomies' => 'category', 'rewrite' => array( 'slug' => 'book' ), ‘show_in_rest’ => true );
讓我們來看看所有這些都做了什么。
- 標(biāo)簽參數(shù)是我們已經(jīng)定義的標(biāo)簽數(shù)組。
'has_archive' => true
為自定義文章類型啟用文章類型存檔。這默認(rèn)為false,所以我喜歡覆蓋它并給自己選擇使用文章類型存檔的選項(xiàng)(我將很快向您展示如何使用)。'public' => true
使文章類型可以包含在搜索結(jié)果和自定義查詢中。同樣,默認(rèn)值為false,這是我喜歡覆蓋的內(nèi)容。- “hierarchical”值將取決于您希望如何使用自定義文章類型。如果將此設(shè)置為true,則文章類型的行為類似于頁面,具有可能的層次結(jié)構(gòu)以及您文章類型的任何文章的父文章和子文章。如果將其設(shè)置為false,它的行為就像文章一樣,沒有層次結(jié)構(gòu)。
- ‘supports’ 數(shù)組定義了您可以擁有此文章類型支持的文章類型的許多功能。我喜歡確保打開特色圖像和自定義字段等功能。
- ‘taxonomies’ 參數(shù)定義了適用于此文章類型的現(xiàn)有分類法。在這里,我使用“category”分類法。如果您想使用自定義分類法但尚未注冊(cè),只需跳過此行,然后將分類法注冊(cè)到文章類型。如果您已經(jīng)注冊(cè)了自定義分類法,則可以使用此行將其添加到文章中。
- 我正在使用“rewrite”參數(shù),因?yàn)槲乙o分類法一個(gè)不同于我想用于它的slug的名稱。我將在稍后更詳細(xì)地解釋這一點(diǎn)。
‘show_in_rest’ => true
確保文章類型可用于REST API和Gutenberg接口。它默認(rèn)為false,這對(duì)我來說毫無意義——我希望我所有的文章類型都使用相同的編輯界面!
所以這些就是所有的論點(diǎn)。但是我們還沒有真正注冊(cè)文章類型。是時(shí)候解決這個(gè)問題了。
添加register_post_type()函數(shù)
最后一步是將所有這些整合到register_post_type()
函數(shù)中。
在您的論點(diǎn)下方,仍在大括號(hào)內(nèi),添加以下內(nèi)容:
register_post_type( ‘wbolt_book', $args );
這將使用我們已經(jīng)定義的參數(shù)注冊(cè)“wbolt_book”文章類型。
現(xiàn)在您可能會(huì)更容易理解為什么我之前使用了 ‘rewrite’ 參數(shù)。我喜歡為我的文章類型的名稱添加前綴,因此我可以確保它們不會(huì)與任何第三方插件添加的任何文章類型發(fā)生沖突,但我不希望將前綴公開。
默認(rèn)情況下,當(dāng)WordPress顯示您的文章類型的示例時(shí),它將在 URL 中使用文章類型的名稱。因此,我的名為“My Wonderful Book”的書的URL為 mysite.com/wbolt_book/my-wonderful-book。我不希望這樣,所以我使用“rewrite”參數(shù)將URL更改為 mysite.com/book/my-wonderful-book??雌饋砗枚嗔?,是嗎?
現(xiàn)在保存您的文件并在WordPress管理員中激活您的插件。您會(huì)發(fā)現(xiàn)管理菜單中出現(xiàn)了一種新的文章類型。
管理屏幕中的“book”文章類型
文章類型現(xiàn)已注冊(cè)并準(zhǔn)備好在您的網(wǎng)站上使用?;ㄒ恍r(shí)間向其中添加一些文章(記住您的自定義文章類型的文章,而不是博客文章 – WordPress有時(shí)會(huì)讓人感到困惑?。┤缓笪覀儗⒖纯慈绾卧谇懊骘@示您的自定義文章類型的文章您網(wǎng)站的結(jié)尾。
如何在您的網(wǎng)站中顯示W(wǎng)ordPress自定義文章類型
您添加到站點(diǎn)的大多數(shù)自定義文章類型都將像文章一樣工作,這意味著它們旨在顯示在存檔頁面中。也許您正在使用自定義分類法來顯示它們,或者您可能像我一樣添加了“category”分類法。
或者,如果您使用了像WooCommerce這樣的插件來添加自定義文章類型以向您的網(wǎng)站添加特定功能,那么該插件可能會(huì)添加一些特定頁面(如“Shop2頁面”)以輸出您的自定義文章類型。
顯示自定義文章類型的四個(gè)選項(xiàng)是:
- 顯示單個(gè)文章(在我的示例中,即書)
- 顯示完整的文章類型存檔,列出所有書籍。
- 使用您為自定義文章類型注冊(cè)的分類顯示自定義分類存檔。
- 將自定義文章類型(例如書籍)中的文章集成到現(xiàn)有分類法(例如“category”)的存檔中,或集成到主博客頁面中。
讓我們依次看看這些。
警告!如果在此過程中的任何時(shí)候您無法訪問自定義文章類型的檔案或單個(gè)文章,那是因?yàn)閃ordPress尚未為它們編寫永久鏈接。要解決此問題,請(qǐng)轉(zhuǎn)到“設(shè)置”>“固定鏈接” ,然后單擊“保存更改?”按鈕。這將告訴WordPress檢查任何新的文章類型并為它們創(chuàng)建URL。
顯示文章類型存檔
您擁有的第一個(gè)選項(xiàng)是創(chuàng)建自定義文章類型存檔中所有文章的存檔頁面。
如果您在注冊(cè)文章類型時(shí)將“has_archive”定義為true,WordPress將自動(dòng)為您的文章類型生成一個(gè)存檔頁面。您可以使用定制器將此添加到導(dǎo)航菜單中。
打開定制器并選擇菜單選項(xiàng)。選擇您的主菜單并單擊添加項(xiàng)目?按鈕以向您的菜單添加額外的項(xiàng)目。
在WordPress定制器中添加菜單項(xiàng)
從出現(xiàn)的選項(xiàng)中選擇您的文章類型,然后單擊其名稱右側(cè)的向下箭頭。這將顯示包含您添加的每個(gè)文章的所有列表,以及一個(gè)在我的例子中稱為All Books的選項(xiàng)。單擊它,它將被添加到您的菜單中。
如果然后單擊菜單中的該項(xiàng)目,則可以編輯標(biāo)簽。我不想稱我的為“All Books”,而只稱其為“Books”。
編輯書籍菜單項(xiàng)
請(qǐng)注意,您只能通過定制器執(zhí)行此操作 – 在菜單屏幕中是不可能的。因此,請(qǐng)確保您使用定制器將您的自定義文章類型存檔添加到您的菜單中。
自定義文章類型存檔
WordPress將使用模板層次結(jié)構(gòu)來識(shí)別主題中的哪個(gè)模板文件用于顯示自定義文章類型存檔。
WordPress模板層次結(jié)構(gòu)
如果您的主題有一個(gè)archive.php文件,它將使用該文件,如果沒有,它將使用index.php。
如果要編輯自定義文章類型存檔的輸出方式,則可以為自定義文章類型存檔創(chuàng)建模板文件。
對(duì)于特定的自定義文章類型,您需要?jiǎng)?chuàng)建一個(gè)名為archive-$posttype.php的模板文件,其中$posttype是您的文章類型的名稱。因此,對(duì)于我的書籍文章類型,我將創(chuàng)建一個(gè)名為archive-wbolt_book.php的文件。
創(chuàng)建此文件的最簡(jiǎn)單方法是在您的主題中復(fù)制archive.php文件。重命名并編輯它,以便它以您想要的方式顯示您的文章類型存檔。
顯示單個(gè)文章
使用自定義文章類型創(chuàng)建的單個(gè)文章也將使用模板層次結(jié)構(gòu)中找到的第一個(gè)相關(guān)模板文件顯示。
您可以使用單個(gè)文章比使用存檔更進(jìn)一步:您不僅可以為文章類型創(chuàng)建模板文件(single-$posttype.php),還可以為該文章的特定文章創(chuàng)建文件使用該文章的slug鍵入 (single-$postype-slug.php)。
因此,如果我將Great Expectations?添加到我的書評(píng)網(wǎng)站,我可以為所有書評(píng)創(chuàng)建一個(gè)名為single-wbolt_book.php的文件,或者我可以為該書創(chuàng)建一個(gè)名為 single-wbolt_book-great-expectations.php的目標(biāo)文件。如果我沒有創(chuàng)建這些文件中的任何一個(gè),WordPress將默認(rèn)使用single.php或(如果不存在singular.php或index.php。
將自定義文章類型添加到主博客頁面
默認(rèn)情況下,您的主博客頁面將僅包含“post”文章類型。但是,如果您還想在該頁面上包含自定義文章類型,與博客文章混合怎么辦?
您可以通過使用WordPress中的pre_get_posts鉤子來完成此操作。
在您注冊(cè)文章類型的插件中,添加以下內(nèi)容:
is_home() && $query->is_main_query() ) { $query->set( ‘post_type', array( ‘post’, ‘wbolt_book’ ); } } add_action( 'pre_get_posts', 'wbolt_books_on_blog_page' ); ?>
這會(huì)檢查我們是否在“主頁”頁面(即博客頁面,即使那不是您網(wǎng)站的首頁)以及主查詢是否正在運(yùn)行(因?yàn)槟幌朐谝粋€(gè)小部件,例如)。如果是這樣,它會(huì)將文章和書籍添加到查詢中。
請(qǐng)注意,您必須在數(shù)組中包含“post”文章類型以及新的文章類型。
小結(jié)
WordPress自定義文章類型是將其從簡(jiǎn)單的博客平臺(tái)提升為真正的內(nèi)容管理系統(tǒng)的功能。它們使您可以創(chuàng)建復(fù)雜的定制站點(diǎn),這些站點(diǎn)可以充當(dāng)商店、參考中心、媒體站點(diǎn)或您需要的任何東西。
您可以通過以下三種方式之一將自定義文章類型添加到您的WordPress網(wǎng)站。您可以使用諸如WooCommerce之類的插件來注冊(cè)與插件功能相關(guān)的自定義文章類型。您可以使用CPT UI或Pods之類的插件來添加您自己的自定義文章類型?;蛘吣梢跃帉懽约旱牟寮⑹褂迷?code>register_post_type()函數(shù)使用代碼注冊(cè)文章類型。無論您使用哪種方法,您都可以從您的WordPress網(wǎng)站獲得更多收益。
版權(quán)聲明:
本站所有文章和圖片均來自用戶分享和網(wǎng)絡(luò)收集,文章和圖片版權(quán)歸原作者及原出處所有,僅供學(xué)習(xí)與參考,請(qǐng)勿用于商業(yè)用途,如果損害了您的權(quán)利,請(qǐng)聯(lián)系網(wǎng)站客服處理。