WordPress 自定義帖子類型 - 初學者指南
已發表: 2017-01-04WordPress 不再只是用於編寫和發布博客文章的工具。 多年來,它已發展成為一個可擴展、靈活且強大的內容管理系統。 WordPress 正在緩慢但肯定地朝著成為構建 Web 應用程序的成熟框架的方向發展。 使這個 CMS 如此可調整的一件事是自定義帖子類型。
默認情況下,WordPress 帶有 5 種內容帖子類型,其中 2 種您應該很熟悉:帖子和頁面。 但是用戶可以根據需要創建任意數量的自定義帖子類型,並使用它們來調整 WordPress 以滿足他們的需求。 在本文中,我們將熟悉 WordPress 自定義帖子類型,以及它們如何幫助您構建出色的網站。 我們將介紹兩種創建自定義帖子類型的方法:手動和使用插件。
WordPress 自定義帖子類型
開箱即用,WordPress 附帶以下帖子類型:
- 郵政
- 頁
- 修訂
- 附件
- 導航菜單
WordPress 通過允許獨特的選項和功能以不同的方式處理其每種帖子類型。 一個簡單的例子是類別和標籤,它們是帖子類型“帖子”獨有的。 您可以將博客文章設置為特定類別,但不能對靜態頁面執行相同操作。 另一方面,頁面可以有父級和模板。
到目前為止提到的帖子類型由 WordPress 保留。 用戶可以創建自己的自定義帖子類型來擴展網站的功能,並更好地組織他們的內容。 通常,創建自定義帖子類型與創建自定義字段和自定義分類法密切相關,允許您插入獨特的內容和選項——特定於給定的帖子類型。 但是,讓我們再把這些放在一邊,專注於為我們的網站設置一個獨特的帖子類型。
自定義帖子類型示例
帖子類型可以是您網站所需的任何類型的內容。 假設我們有一個播客網站,需要顯示播客劇集,並且需要偶爾發佈單獨的博客文章。 現在,如果我們將所有內容(播客和博客文章)混合在一個地方,我們的內容部分很快就會變得非常混亂。 這就是為什麼對於我們偶爾的博客帖子,我們將使用 WordPress 中的默認帖子類型“post”,這允許我們使用默認分類法:類別和標籤。
至於我們的Podcast部分,我們將創建一個名為Podcast的自定義帖子類型。 這樣,我們可以將網站上的兩種不同內容類型分開,並以一種整潔的方式組織它們。 稍後,我們可以為我們的播客部分創建自定義字段,例如劇集持續時間、節目主持人、鏈接等。 此外,我們可以設置特定於此類內容的自定義分類法,例如播客類別、播客節目等。 您會看到它的去向,以及 WordPress 在內容操作和結構方面提供了多大的靈活性。
在 WordPress 中創建自定義帖子類型
有兩種方法可以在 WordPress 中創建自定義帖子類型:手動(相當簡單,但需要熟悉編碼)和使用插件(更簡單的方法,但需要您安裝插件)。 你應該選擇哪一個? 由於不兼容、性能問題和糟糕的代碼,擁有許多插件可能會讓您頭疼。 如果您已經安裝了大量的插件,那麼您可能希望這一次弄髒自己的手。 我們將介紹這兩種方法,由您決定哪一種最適合您。
使用插件
有一些用於創建自定義帖子類型的插件。 最受歡迎的用戶界面之一是自定義帖子類型 UI,它還允許您為您的帖子類型創建自定義分類法。
重要提示:如果您刪除有問題的插件,使用插件創建的帖子類型將消失。 數據將在數據庫中,但您的自定義帖子類型將未註冊,並且無法從管理區域訪問。
這個插件的界面非常直觀和簡單。 您單擊添加新的,然後為自定義帖子類型提供帖子類型名稱、標籤、單數標籤和描述。 並不是說 5 種 WordPress 帖子類型是保留的,您不能使用這些名稱。 這是您應該輸入的示例:
帖子類型名稱:播客
標籤:播客
單數名稱:播客
描述:播客的帖子類型
WordPress 使用單數名稱字段來顯示一些 UI 元素和操作,例如添加新播客。
手動
要手動創建自定義帖子類型,您需要修改主題的 functions.php。 使用您最喜歡的 FTP 客戶端並登錄到託管您網站的服務器。 連接後,您需要:
1. 導航到 wp-content -> 主題 -> 你的主題
2.打開functions.php
3. 如果您使用的是子主題,並且沒有這樣的文件,請創建它。
4. 插入下面的代碼。
根據我們的示例,我們需要創建一個播客自定義帖子類型。 這是代碼(從第 4 步開始:以下代碼進入您的 functions.php 文件):
// Registering CPT function podcast_post_type() { //Setting up the user interface labels for podcasting CPT $labels = array( 'name' => _x( 'Podcasts', 'Post Type General Name' ), 'singular_name' => _x( 'Podcast', 'Post Type Singular Name' ), 'menu_name' => __( 'Podcasts' ), 'name_admin_bar' => __( 'Podcast' ), 'parent_item_colon' => __( 'Parent Podcast' ), 'all_items' => __( 'All Podcasts' ), 'add_new_item' => __( 'Post New Podcast' ), 'add_new' => __( 'New Podcast' ), 'new_item' => __( 'New Podcast' ), 'edit_item' => __( 'Edit Podcast' ), 'update_item' => __( 'Update Podcast' ), 'view_item' => __( 'View Podcast' ), 'search_items' => __( 'Search Podcasts' ), 'not_found' => __( 'No Podcasts found' ), 'not_found_in_trash' => __( 'No Podcasts found in trash' ) ); //Setting up other options for Podcasts CPT $args = array( 'label' => __( 'Podcasts' ), 'labels' => $labels, 'description' => __( 'Creating and managing podcasts' ), 'supports' => array( 'title', 'editor', 'excerpt', 'thumbnail', 'comments', 'revisions', 'custom-fields' ), //Initially supported features 'taxonomies' => array( 'podcast-category'), //If custom taxonomies exist, insert their names in the array 'hierarchical' => false, 'public' => true, 'show_ui' => true, 'show_in_menu' => true, 'menu_position' => 5, 'show_in_admin_bar' => true, 'show_in_nav_menus' => true, 'can_export' => true, 'has_archive' => true, 'exclude_from_search' => false, 'publicly_queryable' => true, ); //Registering custom post type register_post_type( 'podcasts', $args ); } // Hook into init action add_action( 'init', 'podcasts_post_type', 0 );
這部分代碼可能看起來很複雜,但實際上並非如此。 您只是為自定義帖子類型插入一堆選項,並指定它將支持什麼。 注意:

- $labels 數組告訴 WordPress 如何在管理面板中顯示帖子類型。
- $args 數組從 $labels 數組加載所有配置,並指定自定義帖子類型的選項。
- 當 register_post_type( 'podcasts', $args ) 函數在主 podcasts_post_type() 函數中使用 2 個參數調用時,魔法就會發生:自定義帖子類型的名稱和存儲在 $args 中的選項(這是一個關聯數組)。 然後,我們只需將 podcasts_post_type() 函數掛鉤到 init,並讓 WordPress 加載它。
當您單擊保存並將修改後的 functions.php 上傳到主題文件夾時,您應該會在 WordPress 管理面板上看到 Podcast(只是下面的帖子,因為我們將 $args 中的 menu_position 設置為 5)。 如果將鼠標懸停,您應該會看到“所有播客”和“添加新播客”之類的操作——正如我們在 $labels 數組中指定的那樣。 由於我們沒有插入任何自定義字段,因此當您嘗試添加新播客時,一切都將與添加普通帖子一樣。
如果您確實注意到,在 $args 數組中,我們添加了“播客”作為分類。 我們尚未創建此分類法,但這最終將包含我們的自定義類別,如播客類別、播客節目等。
當談到 WordPress 自定義帖子類型時,這就是您現在真正需要的。 現在問題變成了,如何顯示 CPT 中的內容,如何創建分類法(在我們的例子中是播客分類法),以及如何創建自定義字段? 別擔心,我們將逐步介紹所有這些!