如何在 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 主题开发中使用此解决方案,特别是在您需要一些特定自定义帖子类型的设置页面时; 这当然是理想的解决方案。