问题描述

我目前正在开发一个使用两个自定义帖子类型的 wordpress 插件。我想知道这里:是否可以添加自定义帖子类型菜单作为另一个自定义帖子类型的子菜单?

最佳解决方案

是。当您注册您的帖子类型时,您需要将 show_in_menu 设置为您希望显示的页面。

添加自定义帖子类型作为帖子的 sub-menu

在这里我们将”movies” 的帖子类型设置为在帖子中包含在 sub-menu 中。

register_post_type( 'movies',
    array(
            'labels' => array(
                    'name' => __( 'Movies' ),
                    'singular_name' => __( 'Movie' )
            ),
    'public' => true,
    'has_archive' => true,
    'show_in_menu' => 'edit.php'
    )
);

如果您已将分类标准注册到自定义帖子类型,那么它也需要添加到页面中。

add_submenu_page()中,第一个参数是分配给它的页面,最后一个是菜单段。

add_action('admin_menu', 'my_admin_menu');
function my_admin_menu() {
    add_submenu_page('edit.php', 'Genre', 'Genre', 'manage_options', 'edit-tags.php?taxonomy=genre');
}

将自定义帖子类型添加为另一个自定义帖子类型的 sub-menu

要将页面添加到另一个自定义帖子类型,包括帖子类型的查询字符串参数以及页面名称。

要添加 CPT 电影及其分类法类型下的帖子类型娱乐调整这样的代码。

edit.php 成为 edit.php?post_type=entertainment

edit-tags.php 成为 edit-tags.php?taxonomy=genre&post_type=entertainment

register_post_type( 'movies',
    array(
            'labels' => array(
                    'name' => __( 'Movies' ),
                    'singular_name' => __( 'Movie' )
            ),
    'public' => true,
    'has_archive' => true,
    'show_in_menu' => 'edit.php?post_type=entertainment'
    )
);

add_action('admin_menu', 'my_admin_menu');
function my_admin_menu() {
    add_submenu_page('edit.php?post_type=entertainment', 'Genre', 'Genre', 'manage_options', 'edit-tags.php?taxonomy=genre&post_type=entertainment');
}

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。