是否可以将自定义投递类型菜单添加为另一个自定义投递类型子菜单

时间:2013-08-18 作者:Ari

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

3 个回复
最合适的回答,由SO网友:epilektric 整理而成

对注册帖子类型时,需要设置show_in_menu 到您希望在其上显示的页面。

添加自定义帖子类型作为帖子的子菜单这里我们将“movies”帖子类型设置为包含在帖子下的子菜单中。

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() 第一个参数是要分配给它的页面,最后一个参数是菜单slug。

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\'); 
}  
添加自定义帖子类型作为另一个自定义帖子类型的子菜单要将页面添加到另一个自定义帖子类型,请包括帖子类型的查询字符串参数以及页面名称。

要在post-type Entertainment下添加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\'); 
}

SO网友:ConConovaloff

我们的自定义帖子类型:

$args[\'show_in_menu\'] = false;
register_post_type(\'custom_plugin_post_type\', $args);
为现有自定义帖子类型添加他(例如“产品”):

$existing_CPT_menu = \'edit.php?post_type=product\';
$link_our_new_CPT = \'edit.php?post_type=custom_plugin_post_type\';
add_submenu_page($existign_CPT_menu, \'SubmenuTitle\', \'SubmenuTitle\', \'manage_options\', $link_our_new_CPT);
或添加自定义插件菜单:

// Create plugin menu
add_menu_page(\'MyPlugin\', \'MyPlugin\', \'manage_options\', \'myPluginSlug\', \'callback_render_plugin_menu\');

// Create submenu with href to view custom_plugin_post_type
$link_our_new_CPT = \'edit.php?post_type=custom_plugin_post_type\';
add_submenu_page(\'myPluginSlug\', \'SubmenuTitle\', \'SubmenuTitle\', \'manage_options\', $link_our_new_CPT);

SO网友:jimver04

这对我很有用

enter image description here

add_action(\'admin_menu\', \'vrodos_plugin_menu\');

function vrodos_plugin_menu(){
    add_menu_page( \'VRodos Plugin Page\',
                   \'VRodos\',
                    \'manage_options\',
                    \'vrodos-plugin\',
                    \'vrodos_plugin_main_page\');
    
    
    add_submenu_page(\'vrodos-plugin\',
                     \'Games\',
                     \'Games\',
                     \'manage_options\',
                     \'edit.php?post_type=vrodos_game\'
                     );
}
当我注册cpt“vrodos\\u游戏”时,我设置

    \'show_ui\'               => true,
    \'show_in_menu\'          => false,

结束

相关推荐

Display All Non-Used Plugins

我的公司目前拥有大约20个多站点,并且每天都在增长。我们正在尝试通过插件并制定标准。IE,表单使用插件X。然而,我们还没有找到一种单一的方法来检查和系统地显示哪些插件甚至没有被使用。是否有一个功能可以向我们显示已使用或未使用的插件?我试着寻找我能想到的一切,但我一生都找不到答案。