如何在 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 主題開發中使用此解決方案,特別是在您需要一些特定自定義帖子類型的設置頁面時; 這當然是理想的解決方案。