WordPress 自訂貼文類型終極指南

已發表: 2024-03-26

十多年前,我做出了改變生活和職業的決定,只專注於使用 WordPress 作為我的發布平台和我為其建立插件的 CMS。 主要原因是優秀的文檔,包括無數帶有片段和教程的帖子,以及擴展 WordPress 的便捷性。 對於我當時的用例來說,擴展 WordPress 的最突出的功能是自訂貼文類型。

自訂貼文類型 (CPT) 主要在 2010 年的 WordPress 版本 3 中進行了改進,有多種用途。 我確信你在不知情的情況下見過他們。 讓我向您概述 CPT、我如何使用它們的具體範例、如何自行設定它們以及如何使用相關插件完成更多任務。

什麼是自訂貼文類型?

WordPress 核心附帶各種貼文類型。 最明顯的是貼文、頁面和附件。

在 WordPress 6.4 中,還有四個:

  • 修訂
  • 導航選單
  • 區塊模板
  • 模板零件

有趣的事實:評論不是帖子類型。 我認為,如果 WordPress 最初不是以評論為核心部分的部落格平台,現在人們也會將它們作為一種貼文類型來處理。

正如這些可能表明的那樣,貼文類型並不總是顯而易見的,也不一定是我們將其描述為「內容」的前端中可見的東西。 它們更多的是資料庫中的一組相關項目。

您可以添加更多這些“東西”,然後將其稱為“自訂”帖子類型。

它不是 WordPress 的官方術語,但我喜歡任何可見的自訂貼文類型的「自訂「內容」類型」這個短語。 稍後我將介紹幾個例子。

為什麼要使用自訂貼文類型?

隨著時間的推移,WP Mayor 使用了多種自訂貼文類型,例如您現在可以看到的終身優惠。

我個人在很多事情上都使用過自訂貼文類型。

最常見的是網站上單獨的內容部分。 當內容的顯示和行為與內建貼文和頁面不同時,這是最有意義的。

讓我們想像一下,WP 市長也有專門的「新聞」貼文類型。 只需註冊此自訂貼文類型,即可獲得以下好處:

  • WP Admin 選單中的一個獨特的「新聞」項目。
  • 有機會向使用者和使用者角色授予該類型的不同能力。
  • 有不同的範本用於在前端顯示單一新聞項目。
  • 單獨的檔案和新聞源。
  • 附加帖子元資料僅與新聞一起儲存和顯示。

我還在各種插件中的內容元素中使用了自訂帖子類型。 我曾經建立了一個度假屋預訂平台,其中房屋、預訂和付款都是具有獨特屬性的獨特自訂貼文類型。 大多數 WordPress 電子商務外掛程式也在做這件事。

在另一種情況下,我想記錄所有外發電子郵件的內容。 因此,我建立了一個「日誌」貼文類型,其中包含電子郵件內容和所有附加元數據,這些元數據只有在 WordPress 後端具有適當功能時才可見。

最後,我最初開發的Advanced Ads插件使用了CPT來儲存廣告內容。

這些只是自訂帖子類型的幾個範例。 我知道我一定忘記提及這些年來我遇到的許多其他令人興奮的用例。

WordPress 中 CPT 的主要優點是它們只需要幾行程式碼或透過外掛程式快速設置,而 WordPress 會處理您在網站上管理和顯示它們所需的大量邏輯。 那麼,讓我們直接了解如何建立 WordPress 自訂貼文類型。

建立自訂貼文類型

自訂帖子類型可以手動或透過插件建立。

如果您沒有編碼經驗,外掛程式可以讓您更輕鬆地建立自訂貼文類型。

使用插件的一個缺點是,一旦刪除插件,您的自訂貼文類型就會消失。 雖然它可能仍然存在於資料庫中,但 WordPress 在前端或後端不再知道它。

作為一個已經做過幾十次這樣的開發人員,我還是更喜歡手動方法。 然而,我很高興地承認,如果暫時使用 WordPress 自訂貼文類型或為客戶建立展示,我也會使用具有良好 UI 的外掛程式。

自訂貼文類型的決定

儘管我們使用這種方法來創建自訂帖子類型,但我們首先需要做出一些決定。 雖然理論上您可以稍後更改其中任何一個,但這樣做可能會極大地影響您的站點和設置,因此最好提前考慮它們。

公開還是非公開?

關於自訂貼文類型的主要決定是誰應該看到它們並與之互動。 使用自訂程式碼或在插件中,您可以選擇 CPT 是否在前端可見,包括直接存取的檔案和單頁,以及使用者是否透過搜尋找到它。 它是否應該與選單項目一起出現在 WordPress 網站的後端?

雖然「新聞」CPT 可能在前端完全可見,但內部日誌或付款之類的內容可能僅限於在 WordPress 後端具有特定角色的用戶。

等級制

您可能已經注意到 WordPress 貼文和頁面貼文類型的行為略有不同。 頁面在前端沒有存檔,但您可以擁有父頁面和子頁面。

後者稱為“層次結構”,它也在創建您自己的帖子類型時定義。

對於分層貼文類型,編輯頁面提供選擇父頁面和訂單的選項。

WordPress 編輯器中的頁面屬性部分顯示頁面層次結構的選項。
編輯頁面時的層次結構選項。

自動從頁面建立選單或清單時,順序和父頁面可能很重要。 層次結構在 URL slug 中也可見。 如果我的頁面是“Troubleshooting”,並以“Documentation”為父頁面,則最終 URL 可能是documentation/troubleshooting

提示:如果您的 CPT 具有更深的層次結構,我建議使用嵌套頁面插件以正確的順序快速排列帖子。

區塊或經典編輯器

建立自訂貼文類型時,系統會詢問您是否在「REST API」中顯示它。 這個技術術語做了一件至關重要的事情:它確定您的 CPT 是使用區塊編輯器還是經典編輯器視圖。

根據經驗,如果您的貼文類型與常規內容類似並且您想要使用 WordPress 區塊,則使用區塊編輯器是有意義的。 任何不需要大部分螢幕內容的自訂貼文類型都應選擇經典編輯器。 因此,它不應該透過 REST API 交付。

URL slug 和結構

您需要做出的另一個關鍵決定是命名 CPT slug。 我們的「新聞」貼文類型可能會在 URL 中被引用為news ,但如果您有更奇特的內部名稱,您可能需要為前端 URL 選擇一個簡短的形式。

這對您的 SEO 來說可能是一個重要的決定,因此請花幾分鐘考慮一下。

支援的元素

根據您正在建立的貼文類型,您可能還需要預先決定是否啟用對以下元素的支援:

  • 標題(預設啟用)
  • 顯示編輯器(預設為啟用)
  • 評論
  • 修訂
  • 作者
  • 摘錄
  • 縮圖

還有更多選項可供微調。 然而,在使用我們的 WordPress 自訂貼文類型之前,以上是需要考慮的最重要的因素。

使用外掛程式建立自訂貼文類型

考慮到這一點,讓我們看看使用外掛程式建立自訂貼文類型,然後手動執行相同的操作。

我將使用 wordpress.org 中最受歡迎的免費工具之一:WebDevStudios 的自訂貼文類型 UI (CPTUI)。

他們的介面非常簡單,具有人們期望從自訂帖子類型插件中獲得的所有選項。 然而,它也清楚地表明,自訂貼文類型仍然是一個需要掌握的抽象概念,而不是普通 WordPress 發布者在不深入了解選項的情況下應該修改的功能。

使用自訂貼文類型 UI 外掛程式建立新的 WordPress 自訂貼文類型時的第一個螢幕,其中包含選項。
使用自訂貼文類型 UI 外掛程式建立新的 CPT。

提示:我個人對 CPT 的「公開」選項持保守態度,並儘可能限制誰應該在前端看到它們以及誰應該能夠在後端更改它們。 如果需要,您可以稍後授予更多存取權限。

自訂貼文類型 UI 的優點

這個插件有一些我喜歡的東西,而其他人可能有也可能沒有。

我通常會手動建立 CPT,因此我知道編寫標籤需要花費大量時間。 如果您想將所有這些都調整為提及您的 CPT 姓名,則大約有三打。 正如您在上面的螢幕截圖中看到的,自訂貼文類型 UI 外掛程式有一個選項可以為您自動填入這些標籤。 您仍然可以稍後在介面中調整它們。

接下來,我可以保存我的自訂帖子類型並稍後進行編輯。 我甚至可以更改 slug,然後該插件將遷移該類型的所有帖子。 雖然我會盡力防止出現需要這樣做的情況,但很高興知道這是可能的並且由插件處理。

自訂貼文類型 UI 保留我的貼文類型的概述。 雖然感覺有點不知所措,但它比自訂程式碼更容易審查。 我也喜歡在最後一欄看到模板清單。

由自訂貼文類型 UI 外掛程式建立的 WordPress 自訂貼文類型概述。
列出了自訂貼文類型。

這些模板是 WordPress 自訂貼文類型的魅力的一部分。 如果我們的新聞 CPT 使用 slug news ,那麼 WordPress 會自動在您的主題中尋找名為archive-news.php的文件,以呈現該貼文類型的存檔頁面或單一新聞頁面的single-news.php 。 有關詳細信息,請參閱模板層次結構。

使用 CPTUI 產生程式碼

最後讓我推薦 Custom Post Type UI 的功能是將CPT 匯出為 PHP 程式碼的工具。 在CPT UI > 工具 > 取得程式碼下,您將找到要在外掛程式或functions.php中使用的 PHP 程式碼。 感謝插件開發人員沒有將人們鎖定。

這使得 CPTUI 成為開發人員的理想工具,因為我們可以透過介面快速設定自訂貼文類型,然後取得 PHP 程式碼來使用它。 我們甚至可以讓客戶在測試網站上設定它(包含所有標籤等),然後將其遷移到我們需要的地方。

我在插件中找不到的唯一選項是刪除自訂帖子類型及其所有實體。 一般來說,如果您刪除外掛程式或程式碼,自訂貼文將保留在資料庫中。 然而,有專門的插件可以清理它。

使用程式碼

如果您是開發人員並且想要使用程式碼實作自訂貼文類型,那麼讓我向您介紹 WordPress 文件中的相關部分。

註冊新的自訂貼文類型的核心函數是register_post_type函數。 它的參數允許您設定我上面提到的所有選項。

所有帖子類型都儲存在資料庫的wp_posts表中。 字段post_type確定帖子類型屬於哪個條目。

如果您的自訂貼文類型不僅僅涉及內容,您可以使用貼文元資料。 該資料儲存在wp_postmeta中。

順便說一下,一些外掛程式使用自訂表來管理內容類型。 除非確實必要,否則不要走這條路,因為您將無法使用自訂貼文類型 API 隨附的所有內建 WordPress 功能和功能。

擴展自訂帖子類型

如果您的自訂貼文類型是公開的,您可能需要對其進行更多自訂。 這裡有幾個選項。

自訂欄位和元框

更高級的 CPT(例如活動或商店商品)需要的不僅僅是內容。 這就是自訂欄位發揮作用的地方。 它們提供輸入欄位以各種方式建構資料。 例如,「事件」貼文類型可能需要開始和結束日期或地點,以便可以顯示和過濾事件。

雖然您可以使用自訂程式碼添加自訂欄位和元框,但眾所周知的高級自訂欄位是一個出色的插件。 它有如此多的選項並且維護得如此之好,即使我作為開發人員也不會在自己的網站上編寫自訂欄位。

自訂分類法

由於預設的「貼文」貼文類型可以與「類別」和「標籤」一起訂購,因此您也可以為自訂貼文類型註冊分類法。

我上面推薦的自訂帖子類型 UI 插件也可以幫助您創建它們。

能力管理

您可以使用會員等外掛程式為網站上的作者創建新角色,他們只能建立和更改新的自訂貼文類型或調整現有的相關使用者角色。 如果您的編輯工作流程對於每種貼文類型都不同,則建議您這樣做。

切換貼文類型

我目前正在重新組織使用 WordPress 建立的內部知識庫中的內容。 帖子和頁面在這裡有非常不同的目標。 其中一些人改變了目標,所以我需要一個解決方案來切換帖子類型。

雖然我不建議對公共帖子類型輕易執行此操作,但在具有類似帖子類型的非公共網站上執行此操作沒有問題。 為了實現這一目標,我安裝了 Post Type Switcher,這是一個出色的插件,可以讓您毫不費力地做到這一點。 安裝後,該外掛程式將在「編輯貼文」畫面上新增「貼文類型」部分。 您可以使用此介面根據需要更改帖子類型。

結論

我仍然認為自訂貼文類型是 WordPress 在過去十年及以後蓬勃發展的關鍵功能。 正是基於此,我們最喜歡的 CMS 從簡單的部落格平台變成了管理活動或線上購物的多功能工具。

在建立許多網站上使用的插件時,我仍然會遇到創建新帖子類型的程式碼。 但在為自己和客戶建立網站時,我使用外掛程式。 它們使創建和更改自訂帖子類型變得更加簡單,並且具有比我所能構建的更好的用戶介面。