如何在 WordPress 中將子菜單添加到自定義帖子類型菜單

已發表: 2020-01-23

WordPress 將子菜單添加到自定義帖子類型菜單 如果您想將子菜單項添加到自定義帖子類型菜單,您應該使用簡單的代碼片段輕鬆完成此操作。 理想情況下,自定義帖子類型菜單具有默認添加新帖子、分類和所有帖子菜單,但可以將另一個子菜單項添加到 WordPress 設置管理頁面。

在學習如何將子菜單添加到自定義帖子類型菜單之前,重要的是,您了解如何在不使用插件的情況下在 WordPress 中註冊自定義帖子類型。

您需要自定義帖子類型的 slug 作為add_submenu_page()函數的參數之一,以便您在自定義帖子類型菜單下顯示子菜單。 因此,讓我們首先快速回顧一下如何在 WordPress 主題中註冊自定義帖子類型。

註冊自定義帖子類型

雖然,我在該帖子中解釋了有關如何向 WordPress 添加自定義帖子類型的所有細節; 我將快速分享您在 WordPress 中添加自定義帖子類型所需的代碼。 註冊自定義帖子類型的代碼如下:

 /**

  * 自定義帖子類型 - register_post_type()
  * @description- Njengah 教程自定義帖子類型示例
  * @link -https://gist.github.com/Njengah/839466b773085ac2430772e081357cee
  *
  */

       add_action('init', "njengah_tutorial_cpt");

       函數 njengah_tutorial_cpt(){
        
              $標籤=數組(
                           'name' => _x('Tutorials', '帖子類型通用名稱'),
                           'singular_name'=> _x('Tutorial', 'post type 單數名稱'),
                           'menu_name' => _x('Tutorials', 'admin menu'),
                           'name_admin_bar' => _x('Tutorial', 'add new on admin bar'),
                           'add_new' => _x('新增', ''),
                           'add_new_item' => __('添加新教程'),
                           'edit_item' => __('編輯教程'),
                           'new_item' => __('新教程'),
                           'all_items' => __('所有教程'),
                           'view_item' => __('查看教程'),
                           'search_items' => __('搜索教程'),
                           'not_found' => __('沒有找到教程'),
                           'not_found_in_trash' => __('沒有在垃圾箱中找到教程'),
                           'parent_item_colon' => __('家長教程:'),                     

              );

                     $args = 數組(
                           '分層' => 真的,    
                           '標籤' => $標籤,
                           '公共' => 真的,
                           'publicly_queryable' => 真, 
                           '描述' => __('描述'),
                           'show_ui' => 真,
                           'show_in_menu' => 真,
                           'show_in_nav_menus' => 真,                
                           'query_var' => 真,
                           '重寫' => 真的,
                           'query_var' => 真,
                           'rewrite' => array('slug' => 'tutorial'),
                           'capability_type' => '頁面',
                           'has_archive' => 真,
                           'menu_position' => 22,
                           “show_in_rest” => 真,
                           'supports' => array('title', 'editor', 'author', 'thumbnail', 'revisions', 'page-attributes', 'custom-fields' )

                     );

                     register_post_type('tutorial', $args);   

       }

您應該將此代碼添加到您的子主題的functions.php文件中,並且應該在您的儀表板中看到自定義帖子類型,如下圖所示:

WordPress 將子菜單添加到自定義帖子類型菜單

此代碼也可以添加到自定義 WordPress 插件以註冊自定義帖子類型。 您還應該將代碼中的“教程”關鍵字替換為您各自的自定義帖子類型名稱,例如“書”、“電影”等。

將子菜單添加到自定義帖子類型菜單

現在我們要關注如何在自定義帖子類型菜單下添加子菜單頁面。

為了快速概覽,以下是將子菜單項添加到自定義帖子類型菜單應執行的步驟:

  1. 創建一個動作鉤子以使用相應的回調函數註冊子菜單。 在這種情況下,需要創建兩個函數。
  2. 將 add_submenu_page( ) 的第一個參數替換為特定的編輯帖子類型 slug 示例php?post_type='name-of-your-post-type-slug'
  3. php中添加代碼,您將成功地將子菜單添加到自定義帖子類型。

添加子菜單頁面功能

此函數add_submenu_page用於在所有管理菜單頁面中添加子菜單,您可以使用 remove_submenu_page 函數從 WordPress admin 中刪除子菜單

add_submenu_page()函數默認有7個參數,一般代碼可以表示如下:

 add_submenu_page(

             字符串 $parent_slug,

             字符串 $page_title,

             字符串 $menu_title,

             字符串 $capability,

             字符串 $menu_slug,

             可調用 $function = '',

             int $位置=空

 )

添加子菜單頁面功能參數描述如下:

範圍描述
$parent_slug 這是父菜單示例的 slug 名稱,在這種情況下,它將是 edit.php?post_type ='tutorials'
$page_title 要在標題標籤示例“教程子頁面示例”中顯示的文本
$menu_title 要在我們正在創建的子菜單中顯示的文本示例“教程”
$能力可以訪問此菜單示例“管理員”的用戶的 WordPress 角色功能
$menu_slug 這是我們將創建示例“tutorials_subpage_example”的頁面的 slug
$函數將在我們正在創建的子頁面上顯示我們想要的信息的回調函數。 示例標題“教程子頁面示例”
$位置這是菜單項相對於其他子菜單的位置; 您可以使用此數字上下推動菜單以滿足您的喜好。

為了在本教程中進行說明,我們將在上面創建的教程自定義帖子中添加子菜單頁面,如下圖所示:

WordPress 將子菜單添加到自定義帖子類型菜單

將自定義帖子類型 Slug 添加到父 Slug 參數

要註冊我們的子菜單,我們應該將以下代碼添加到下面的functions.php文件中,我們在其中添加了註冊教程自定義帖子類型的代碼:

 /**
  *自定義帖子類型將子頁面添加到自定義帖子菜單
  * @description- Njengah 教程自定義帖子類型子菜單示例
  * @link - https://gist.github.com/Njengah/0764f2c88742c19b67a212c914c9f25f
  *
  */

// 鉤   

add_action('admin_menu', 'add_tutorial_cpt_submenu_example');

//admin_menu回調函數

函數 add_tutorial_cpt_submenu_example(){

     add_submenu_page(
                     'edit.php?post_type=tutorial', //$parent_slug
                     '教程子頁面示例', //$page_title
                     '教程設置', //$menu_title
                     'manage_options', //$ 能力
                     'tutorial_subpage_example',//$menu_slug
                     'tutorial_subpage_example_render_page'//$函數
     );

}

//add_submenu_page回調函數

功能 tutorial_subpage_example_render_page() {

     echo '<h2> 教程子頁面示例</h2>';

}

當您將代碼添加到 functions.php 或插件基礎文件中時,您應該會看到添加了教程設置,如下所示,以及上面討論的所有相應參數,如下圖所示:

WordPress 將子菜單添加到自定義帖子類型菜單

結論

您可以輕鬆將此代碼添加到主題的functions.php並進行相應調整以成功將子菜單添加到自定義帖子類型菜單。 本教程的要點是添加自定義帖子類型 slug 作為add_submenu_page函數的父 slug 將導致在自定義帖子類型菜單下添加子菜單頁面。 我希望您可以在您的 WordPress 主題開發中使用此解決方案,特別是在您需要一些特定自定義帖子類型的設置頁面時; 這當然是理想的解決方案。