自定义帖子类型设置了show_in_menu时缺少分类法菜单

时间:2012-06-08 14:17:08

标签: wordpress menu custom-post-type custom-taxonomy

我用分类法创建了一个自定义帖子类型,一切正常。 WordPress创建一个主菜单:

MyCustomPost
   +----------> MyCustomPost
   +----------> Add New
   +----------> My Taxonomy

但是,我想创建一个我自己的菜单,如下所示:

MyTitle
   +----------> MyCustomPost
   +----------> Add New
   +----------> My Taxonomy

所以,我创建了一个自己的菜单:

        $menu_main = add_menu_page( 'MyMenu', 'MyMenu', 'edit_posts', 'my_menu_key', array( $this, 'menu_main'), $icon_menu, 100 );

注册我的自定义帖子类型后,我将show_in_menu设置为my_menu_key,并且其工作正常。

MyMenu
   +----------> MyCustomPost

问题是:分类学在哪里?和`添加新的子菜单? 有什么想法吗?

3 个答案:

答案 0 :(得分:1)

show_in_menu的好玩法。但是分类法子菜单是built in a hard-coded mannerregister_taxonomy doesn't take any parameter。可能,添加新子菜单的工作方式相同。

解决方法是操纵global $submenu

// PHP 5.3+ anonymous function
add_action( 'admin_init', function() {
    global $submenu; 
    $submenu['my_menu_key'][10] = $submenu['edit.php?post_type=YOUR-CPT-SLUG'][10];
    $submenu['my_menu_key'][15] = $submenu['edit.php?post_type=YOUR-CPT-SLUG'][15];
});

答案 1 :(得分:1)

您可以通过使用内置的WordPress函数来实现这一目标,而不是操作$ submenu global。以便将来更好地兼容。

add_action('admin_menu', 'add_tax_menus');
function add_tax_menus() {
    $key = 'edit.php?post_type=CUSTOM_POST_TYPE_SLUG';
    add_submenu_page($key, 'My Page Title', 'My Menu Title', 'manage_categories', 'edit-tags.php?taxonomy=TAXONOMY_SLUG&post_type=CUSTOM_POST_TYPE_SLUG');
}

答案 2 :(得分:-1)

这很简单。添加'menu_name' => 'Docs',

检查WordPress Codex了解详情:http://bitly.com/194qjN3