如何在 WordPress 中將子菜單添加到自定義帖子類型菜單
已發表: 2020-01-23
如果您想將子菜單項添加到自定義帖子類型菜單,您應該使用簡單的代碼片段輕鬆完成此操作。 理想情況下,自定義帖子類型菜單具有默認添加新帖子、分類和所有帖子菜單,但可以將另一個子菜單項添加到 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 插件以註冊自定義帖子類型。 您還應該將代碼中的“教程”關鍵字替換為您各自的自定義帖子類型名稱,例如“書”、“電影”等。
將子菜單添加到自定義帖子類型菜單
現在我們要關注如何在自定義帖子類型菜單下添加子菜單頁面。
為了快速概覽,以下是將子菜單項添加到自定義帖子類型菜單應執行的步驟:
- 創建一個動作鉤子以使用相應的回調函數註冊子菜單。 在這種情況下,需要創建兩個函數。
- 將 add_submenu_page( ) 的第一個參數替換為特定的編輯帖子類型 slug 示例php?post_type='name-of-your-post-type-slug'
- 在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 |
| $函數 | 將在我們正在創建的子頁面上顯示我們想要的信息的回調函數。 示例標題“教程子頁面示例” |
| $位置 | 這是菜單項相對於其他子菜單的位置; 您可以使用此數字上下推動菜單以滿足您的喜好。 |
為了在本教程中進行說明,我們將在上面創建的教程自定義帖子中添加子菜單頁面,如下圖所示:

將自定義帖子類型 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 或插件基礎文件中時,您應該會看到添加了教程設置,如下所示,以及上面討論的所有相應參數,如下圖所示:

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