如何以編程方式創建 WordPress 自定義帖子類型

已發表: 2021-10-05

您想在您的網站上發布自定義帖子類型嗎? 我們已經為您服務了。 在本指南中,我們將教您如何使用一些代碼以編程方式創建 WordPress 自定義帖子類型

最初,創建 WordPress 是為了發布帖子。 然而,經過這麼多年,WordPress 不僅僅是一個發布帖子的平台。 如今,它是最完整的網絡解決方案,為近 40% 的網站提供支持。

儘管它包含了許多功能,但發布仍然是吸引用戶訪問您的網站並保持他們參與度的最佳方式之一。 WordPress 提供默認的帖子類型,但如果您想自定義您的網站並使其在競爭對手中脫穎而出,那麼創建自定義帖子類型可能是一個很好的解決方案。

在本教程中,我們將向您展示如何以編程方式創建和發布 WordPress 自定義帖子類型。 在開始之前,讓我們更好地了解自定義帖子類型到底是什麼以及何時應該使用它們。

什麼是自定義帖子類型?

自定義帖子類型是內容類型。 WordPress 默認帶有幾種帖子類型。 帖子和頁面是最著名的,但還有其他:

  • 帖子
  • 頁面
  • 附件
  • 導航菜單
  • 修訂
  • 自定義 CSS
  • 變更集

大多數用戶使用前五種類型,但還有其他類型。 實際上,您可能在不知道它們是自定義帖子類型的情況下使用其中的一些。

自定義帖子類型的最佳示例是 WooCommerce 產品。 當您第一次激活 WooCommerce 時,該插件會創建一個名為“產品”的自定義帖子類型。 一旦您開始創建產品,它們就會作為產品帖子類型發布,其中包含 WooCommerce 提供的所有增強功能。

即使這些帖子類型不稱為自定義,您也可以像 WooCommerce 一樣創建您的帖子類型,並為它們指定您想要的名稱。 例如,事件、列表、時間表、課程、作品集和個人資料可以是對特定網站有用的帖子類型名稱。

總而言之,自定義帖子類型是一種新的帖子類型,用戶可以根據特定要求創建自定義網站。

為什麼以及何時應該使用自定義帖子類型?

自定義帖子類型 (CPT) 可能因構建方式而異,因此您可以使用它們來實現各種解決方案。

您可以在以下情況下使用自定義帖子類型:

  • 您將定期發布一些您無法使用默認帖子類型發布的特定類型的信息
  • 需要將某種類型的帖子與標準帖子區分開來
  • 需要改變某些類型帖子的行為
  • 想要自定義帖子功能、發布過程和元素或對其應用一些特殊功能

作為一般規則,當您需要不同類型的帖子及其功能或自定義行為時,您應該在 WordPress 網站上使用 CPT。

自定義帖子類型與默認帖子類型不同,因此它們需要特殊處理而無需覆蓋默認帖子類型功能。 當您需要不同的帖子類型時,這是一個很大的優勢,因為您可以從頭開始創建完全符合您要求的自定義帖子類型。

現在我們更好地了解了它們是什麼以及何時使用它們,讓我們看看如何創建自定義帖子類型。

如何以編程方式創建 WordPress 自定義帖子類型

在本節中,我們將通過示例向您展示如何在 WordPress 中創建自定義帖子類型。 在開始之前,請確保備份您的網站並創建一個子主題(如果您還沒有)。

在您的儀表板中,轉到Appearance > Theme Editor ,在右側列中打開子主題的functions.php文件並粘貼以下腳本。 它將註冊一個名為movies的自定義帖子類型。

 函數 QuadLayers_custom_post_type() {
// 為自定義帖子類型設置 UI 標籤
    $標籤=數組(
        'name' => _x('Movies', 'Post Type General Name', 'storefront' ),
        'singular_name' => _x('Movie', 'Post Type Singular Name', 'storefront'),
        'menu_name' => __( '電影', '店面' ),
        'parent_item_colon' => __( '父電影', '店面' ),
        'all_items' => __( '所有電影', '店面' ),
        'view_item' => __( '觀看電影', '店面' ),
        'add_new_item' => __('添加新電影', '店面' ),
        'add_new' => __( '新增', '店面' ),
        'edit_item' => __( '編輯電影', '店面' ),
        'update_item' => __( '更新電影', '店面' ),
        'search_items' => __( '搜索電影', '店面' ),
        'not_found' => __('未找到', '店面' ),
        'not_found_in_trash' => __( '未在垃圾箱中找到', '店面' ),
    );
// 設置自定義帖子類型的其他選項
    $args = 數組(
        '標籤' => __( '電影', '店面' ),
        'description' => __('電影新聞和評論', '店面' ),
        '標籤' => $標籤,  
        'supports' => array('title', 'editor', 'excerpt', 'author', 'thumbnail', 'comments', 'revisions', 'custom-fields', ),     
        '分類法' => 數組('流派'),     
        '分層' => 假,
        '公共' => 真的,
        'show_ui' => 真,
        'show_in_menu' => 真,
        'show_in_nav_menus' => 真,
        'show_in_admin_bar' => 真,
        'menu_position' => 5,
        'can_export' => 真,
        'has_archive' => 真,
        'exclude_from_search' => 假,
        'publicly_queryable' => 真,
        'capability_type' => '發布',
        'show_in_rest' => 真, 
    );
    //註冊您的自定義帖子類型
    register_post_type('電影', $args );
}
add_action('init', 'QuadLayers_custom_post_type', 0 );

粘貼代碼後,一個名為電影的新選項卡將出現在您的 WordPress 管理儀表板上。
以編程方式創建自定義帖子類型

如果打開它,您會看到帖子編輯器與默認帖子類型相同,因為我們為帖子編輯器屏幕設置了相同的參數。 那麼我們怎麼知道它是自定義帖子類型編輯器呢? 因為在頁面的 URL 和標題上,您可以看到 Movies 帖子類型。

添加自定義帖子類型

現在你看到了最終結果,讓我們分析一下代碼,這樣你就可以更好地理解每個部分的作用。

代碼說明

我們剛剛了解瞭如何以編程方式創建 WordPress 自定義帖子類型。 但這只是你必須知道的一半。 如果要創建自己的帖子類型,則需要自定義代碼。 為此,您需要了解片段的每個部分的作用。

我們使用wp_init()鉤子來確保我們的函數運行一次:當 WordPress 啟動時。 在我們的QuadLayers_custom_post_type()函數中,有三個部分。

1) 標籤

這些是主題將在不同的管理和前端頁面上使用的一組字符串。 這是在單個數組上設置的:

$labels = array(
'name' => _x( 'Movies', 'Post Type General Name', 'storefront' ),
);

2) 選項

這些是一些預定義的選項,用於定義我們的自定義帖子類型(電影)的行為和其他一些功能。

每個選項都是一個特定的指令,它將定義我們的自定義帖子類型將如何操作。 最相關的是:

  • 'supports':它定義將在帖子編輯器上使用哪些組件
  • 'taxonomies':您可以將一個或多個現有類別或自定義類別應用於當前功能上註冊的所有 CPT
  • ' 'hierarchical' : 帖子不能有父內容,這會將 CPT 與頁面區分開來。 如果要發布自定義頁面而不是自定義帖子類型,請將其設置為 true
  • ' show_in_admin_bar':在 WordPress 管理儀表板上顯示 CPT 選項卡

有關所有參數及其描述的完整列表,請查看此文檔。

3)自定義帖子類型註冊

WordPress 函數register_post_type()最終將註冊我們新的自定義帖子類型並將其設置為可以使用。

現在您更好地理解了代碼,您可以開始發布您的自定義帖子類型。 但除了發布它們之外,您還需要在某處顯示您的 CPT。 讓我們看看如何做到這一點。

如何在 WordPress 中顯示自定義帖子類型

到目前為止,我們已經了解瞭如何在 WordPress 中以編程方式創建自定義帖子類型。 發布後,您必須決定要在哪裡顯示它。

有幾種方法可以在前端打印 CPT。 您可以在另一個帖子、頁面、側邊欄或您想要的任何其他位置顯示特定自定義帖子類型的完整列表。

在以下示例腳本中,我們將創建一個自定義簡碼,以在新頁面上顯示我們使用上一個函數創建的所有自定義帖子類型。

以下腳本將創建一個名為Movies的短代碼,它將在我們添加短代碼的任何頁面上打印我們添加到 CPT 的所有電影。

 add_shortcode('movies', 'QuadLayers_display_cpt_shortcode');
函數 QuadLayers_display_cpt_shortcode(){
    $args = array('post_type' => 'movies', 'posts_per_page' => 10);
    $the_query = new WP_Query($args);
    如果( $the_query->have_posts() ):
    而 ( $the_query->have_posts() ) : $the_query->the_post();
    $c= the_title( sprintf( '<h2 class="entry-title">', esc_url( get_the_title() ) ), '</h2>')。
    '<div class="entry-content">'。
    內容()。
    '</div>';
結束;
wp_reset_postdata();
別的:
$c = '對不起,沒有帖子符合您的條件。';
萬一;
返回 $c;
}

因此,如果您將簡碼放在頁面上:

顯示 CTP 的簡碼

你會看到結果:

帶有簡碼的自定義帖子類型

結論

總之,我們已經看到,默認情況下,WordPress 包含一些帖子類型,但您可以根據您的要求添加自定義帖子類型以自定義您的網站。

在本指南中,我們向您展示瞭如何以編程方式創建 WordPress 自定義帖子類型。 我們已經分析了片段並描述了每個部分,因此您可以對其進行自定義並在您的網站上使用它。 此外,我們還了解瞭如何創建自定義簡碼,允許您在網站的任何位置顯示自定義帖子類型。

您是否嘗試過在您的網站上創建自定義帖子類型? 在評論部分讓我們知道您的經驗。

要自定義站點的其他區域,請查看以下教程:

  • 如何將自定義上傳字段添加到 WooCommerce
  • 如何將自定義字段添加到結帳
  • 編輯 WooCommerce 結帳字段的指南