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