如何在WordPress中創建自定義帖子類型


您是否想學習如何在WordPress中輕鬆創建自定義帖子類型? 自定義帖子類型將WordPress網站從博客平台轉變為功能強大的內容管理系統(CMS)。

基本上,它們允許您通過為網站創建不同的內容類型來超越帖子和頁面。

在本文中,我們將向您展示如何輕鬆地在WordPress中創建自定義帖子類型。 我們將教您兩種方法,您可以選擇一種看起來更簡單的方法。

在WordPress中創建自定義帖子類型

WordPress中的自定義帖子類型是什麼?

自定義帖子類型是諸如帖子和頁面之類的內容類型。 由於WordPress從簡單的博客平台演變為功能強大的CMS,術語post一直堅持下去。 但是,帖子類型可以是任何類型的內容。

默認情況下,WordPress隨附以下帖子類型:

  • 發布
  • 附件
  • 修訂版
  • 導航菜單

您可以創建自己的自定義帖子類型,然後根據需要調用它們。

例如,如果您運行一個電影評論網站,則可能要創建一個電影評論帖子類型。 該帖子類型可以具有不同的自定義字段,甚至可以具有自己的自定義類別結構。

職位類型的其他示例包括投資組合,推薦書,產品等。

許多流行的WordPress插件已經使用自定義帖子類型將數據存儲在WordPress網站上。 以下是一些使用自定義帖子類型的頂級插件。

  • WooCommerce –將產品自定義帖子類型添加到WordPress網站。
  • WPForms –創建wpforms帖子類型以存儲所有表單
  • MemberPress –添加memberpressproduct自定義帖子類型

我什麼時候需要自定義帖子類型?

請查看我們的文章,了解何時真正需要WordPress中的自定義帖子類型或分類法。

還可以查看WPBeginner的“交易”和“詞彙表”部分。 這些是我們創建的自定義帖子類型,旨在使這些部分與我們的日常博客文章分開。 它可以幫助我們更好地組織網站內容。

您還將注意到,我們正在為其使用自定義分類法,而不是類別或標籤。

話雖如此,讓我們看一下如何輕鬆地在WordPress中創建自定義帖子類型以供您自己使用。

方法1.創建自定義帖子類型–簡單方法

在WordPress中創建自定義帖子類型的最簡單方法是使用插件。 推薦給初學者使用此方法,因為它安全且超級容易。

您需要做的第一件事是安裝並激活“自定義帖子類型” UI插件。 激活後,插件將在您的WordPress管理菜單中添加一個新菜單項,名為 CPT用戶界面

現在去 CPT用戶界面»添加新 創建新的自定義帖子類型。

添加新的自定義帖子類型

首先,您需要為自定義帖子類型提供一個標籤。 此插件將在URL和WordPress查詢中使用,因此只能包含字母和數字。

在此之下,您需要為自定義帖子類型提供複數和單數名稱。

接下來,您可以選擇單擊“根據所選標籤填充其他標籤”鏈接。 這樣做將在下面填充其餘的標籤字段。

向下滾動到“其他標籤”部分,然後您可以在此處提供有關帖子類型和更改標籤的說明。

帖子類型標籤

當您管理特定帖子類型的內容時,將在整個WordPress用戶界面中使用標籤。

接下來是帖子類型設置選項。 在這裡,您可以為帖子類型設置不同的屬性。 每個選項都帶有簡要說明,說明其功能。

帖子類型設置

例如,您可以選擇不將帖子類型設置為分層式(如頁面)或反向按時間順序(如帖子)。

在常規設置下方,您將看到用於選擇此帖子類型將支持哪些編輯功能的選項。 只需檢查您想要包含的選項。

支持的選項

最後,點擊“添加帖子類型”按鈕以保存並創建您的自定義帖子類型。

就是這樣,您已經成功創建了自定義帖子類型。 您可以繼續並開始添加內容。

本文稍後將向您展示如何在您的網站上顯示自定義帖子類型。

手動創建自定義帖子類型

使用插件的問題在於,停用插件後,您的自定義帖子類型將消失。 這些自定義帖子類型中包含的所有數據仍將保留在那裡,但您的自定義帖子類型將被取消註冊,並且無法從管理區域訪問。

如果您正在客戶端站點上工作並且不想安裝其他插件,則可以通過在主題的functions.php文件或特定於站點的插件中添加所需的代碼來手動創建自定義帖子類型(請參閱:自定義帖子)輸入辯論函數(php.php或插件)。

首先,我們將向您展示一個快速且完整的示例,以便您了解其工作原理。 看一下這段代碼:

// Our custom post type function
function create_posttype() {

	register_post_type( 'movies',
	// CPT Options
		array(
			'labels' => array(
				'name' => __( 'Movies' ),
				'singular_name' => __( 'Movie' )
			),
			'public' => true,
			'has_archive' => true,
			'rewrite' => array('slug' => 'movies'),
			'show_in_rest' => true,

		)
	);
}
// Hooking up our function to theme setup
add_action( 'init', 'create_posttype' );

該代碼的作用是註冊一個帖子類型 'movies' 帶有一組參數。 這些參數是我們自定義帖子類型的選項。

這個數組有兩個部分,第一部分被標記,它本身就是一個數組。 第二部分包含其他參數,例如公共可見性,具有存檔,段位和show_in_rest啟用塊編輯器支持。

現在,讓我們看一下一段詳細的代碼,為您的自定義帖子類型添加更多選項。

/*
* Creating a function to create our CPT
*/

function custom_post_type() {

// Set UI labels for Custom Post Type
	$labels = array(
		'name'                => _x( 'Movies', 'Post Type General Name', 'twentytwenty' ),
		'singular_name'       => _x( 'Movie', 'Post Type Singular Name', 'twentytwenty' ),
		'menu_name'           => __( 'Movies', 'twentytwenty' ),
		'parent_item_colon'   => __( 'Parent Movie', 'twentytwenty' ),
		'all_items'           => __( 'All Movies', 'twentytwenty' ),
		'view_item'           => __( 'View Movie', 'twentytwenty' ),
		'add_new_item'        => __( 'Add New Movie', 'twentytwenty' ),
		'add_new'             => __( 'Add New', 'twentytwenty' ),
		'edit_item'           => __( 'Edit Movie', 'twentytwenty' ),
		'update_item'         => __( 'Update Movie', 'twentytwenty' ),
		'search_items'        => __( 'Search Movie', 'twentytwenty' ),
		'not_found'           => __( 'Not Found', 'twentytwenty' ),
		'not_found_in_trash'  => __( 'Not found in Trash', 'twentytwenty' ),
	);
	
// Set other options for Custom Post Type
	
	$args = array(
		'label'               => __( 'movies', 'twentytwenty' ),
		'description'         => __( 'Movie news and reviews', 'twentytwenty' ),
		'labels'              => $labels,
		// Features this CPT supports in Post Editor
		'supports'            => array( 'title', 'editor', 'excerpt', 'author', 'thumbnail', 'comments', 'revisions', 'custom-fields', ),
		// You can associate this CPT with a taxonomy or custom taxonomy. 
		'taxonomies'          => array( 'genres' ),
		/* A hierarchical CPT is like Pages and can have
		* Parent and child items. A non-hierarchical CPT
		* is like Posts.
		*/	
		'hierarchical'        => false,
		'public'              => true,
		'show_ui'             => true,
		'show_in_menu'        => true,
		'show_in_nav_menus'   => true,
		'show_in_admin_bar'   => true,
		'menu_position'       => 5,
		'can_export'          => true,
		'has_archive'         => true,
		'exclude_from_search' => false,
		'publicly_queryable'  => true,
		'capability_type'     => 'post',
		'show_in_rest' => true,

	);
	
	// Registering your Custom Post Type
	register_post_type( 'movies', $args );

}

/* Hook into the 'init' action so that the function
* Containing our post type registration is not 
* unnecessarily executed. 
*/

add_action( 'init', 'custom_post_type', 0 );

如您所見,我們使用此代碼為自定義帖子類型添加了更多選項。 它將添加更多功能,例如對修訂的支持,特色圖片,自定義字段等。

我們還將這種自定義帖子類型與一種稱為流派的自定義分類法相關聯。

您可能還會注意到我們將層次結構值設置為false的部分。 如果您希望自定義帖子類型的行為類似於Pages,則可以將此值設置為true。

要注意的另一件事是重複使用二十二十個字符串,這稱為文本域。 如果您的主題已經準備好翻譯,並且您希望翻譯自定義帖子類型,那麼您將需要提及主題使用的文本域。

您可以在其中找到主題的文本域 style.css 文件放在主題目錄中。 文本域將在文件標題中提及。

在您的網站上顯示自定義帖子類型

WordPress內置支持顯示自定義帖子類型的功能。 將一些項目添加到新的自定義帖子類型後,就可以在網站上顯示它們了。

您可以使用兩種方法,每種方法都有其自身的優勢。

使用默認存檔模板顯示自定義帖子類型

首先,您只需轉到 外觀»菜單 並將自定義鏈接添加到您的菜單。 該自定義鏈接是指向您的自定義帖子類型的鏈接。

將帖子類型添加到導航菜單

如果您使用的是SEO友好的永久鏈接,那麼CPT的URL很可能是這樣的:

http://example.com/movies

如果您沒有使用SEO友好的永久鏈接,則您的自定義帖子類型URL將如下所示:

http://example.com/?post_type=movies

不要忘記用您自己的域名替換example.com,並用您的自定義帖子類型名稱替換電影。

保存菜單,然後訪問網站的前端。 您將看到添加的新菜單,然後單擊該菜單,它將使用主題中的archive.php模板文件顯示自定義帖子類型存檔頁面。

對CPT存檔和單個條目使用自定義模板

如果您不喜歡自定義帖子類型的存檔頁面外觀,則可以將專用模板用於自定義帖子類型存檔。

為此,您需要做的就是在主題目錄中創建一個新文件並將其命名 archive-movies.php。 用自定義帖子類型的名稱替換電影。

首先,您可以復制主題的內容 archive.php 歸檔到 archive-movies.php 模板,然後開始對其進行修改以滿足您的需求。

現在,無論何時訪問自定義帖子類型的存檔頁面,都將使用此模板來顯示它。

同樣,您也可以為帖子類型的單項顯示創建自定義模板。 為此,您需要創建 single-movies.php 在您的主題目錄中。 不要忘了用自定義帖子類型的名稱替換電影。

您可以通過複製主題內容來開始使用 single.php 模板到 single-movies.php 模板,然後開始對其進行修改以滿足您的需求。

在首頁上顯示自定義帖子類型

使用自定義帖子類型的一個優點是,它可以使您的自定義內容類型遠離常規帖子。 但是,如果希望它們顯示在常規帖子中,則可以通過將以下代碼添加到主題的functions.php文件或特定於站點的插件中來實現:

add_action( 'pre_get_posts', 'add_my_post_types_to_query' );

function add_my_post_types_to_query( $query ) {
	if ( is_home() && $query->is_main_query() )
		$query->set( 'post_type', array( 'post', 'movies' ) );
	return $query;
}

別忘了更換 movies 與您的自定義帖子類型。

查詢自定義帖子類型

如果您熟悉編碼並想在模板中運行循環查詢,那麼這裡是執行該操作的方法(相關內容:什麼是循環?)。

通過查詢數據庫,您可以從自定義帖子類型檢索項目。

 'movies', 'posts_per_page' => 10 );
$the_query = new WP_Query( $args ); 
?>
have_posts() ) : ?>
have_posts() ) : $the_query->the_post(); ?>

在此代碼中,首先,我們在新WP_Query類的參數中定義了帖子類型和每頁帖子數。

之後,我們運行查詢,檢索帖子並將其顯示在循環中。

在小部件中顯示自定義帖子類型

您會注意到WordPress中有一個默認的小部件來顯示最近的帖子,但是它不允許您選擇自定義帖子類型。

如果要在窗口小部件中顯示新創建的帖子類型的最新條目怎麼辦? 有一個簡單的方法可以做到這一點。

您需要做的第一件事是安裝並激活Ultimate Posts Widget插件。 激活後,只需轉到 外觀»小部件 並將Ultimate Posts小部件拖放到側邊欄。

終極帖子小部件

這個強大的小部件可讓您顯示任何帖子類型的最新帖子。 您還可以顯示帶有更多鏈接的文章摘錄,甚至在文章標題旁邊顯示特色圖片。

通過選擇所需的選項並選擇自定義帖子類型來配置窗口小部件。 之後,保存您的更改,並在您的網站上查看正在使用的小部件。

更多高級自定義帖子類型調整

您可以使用自定義帖子類型做更多的事情。 您可以學習在主RSS feed中添加自定義帖子類型,或為每種自定義帖子類型創建單獨的feed。

有關更多技巧,請參閱我們最有用的WordPress自定義帖子類型教程列表。

如果您正在尋找一種無需代碼的解決方案來自定義自定義帖子類型存檔頁面,那麼我們建議您看一下Beaver Builder或Divi之類的WordPress頁面構建器插件,因為它們都可以幫助您做到這一點。

我們希望本文能幫助您學習如何在WordPress中創建自定義帖子類型。 您可能還需要查看實用指南,以了解如何增加網站流量的指南。

如果您喜歡這篇文章,請訂閱我們的YouTube頻道WordPress視頻教程。 您也可以在找到我們 推特 和Facebook。