3

我用分类法创建了一个自定义帖子类型,一切正常。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

问题是:分类学在哪里?和`添加新子菜单?任何想法?

4

2 回答 2

1

您可以通过使用内置的 WordPress 函数来实现这一点,而不是操纵 $submenu 全局,以获得更好的未来兼容性。

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');
}
于 2014-07-07T17:21:23.470 回答
1

很好的把戏show_in_menu。但是分类子菜单是以硬编码的方式构建的register_taxonomy 不采用任何类似的参数。可能,添加新子菜单的工作方式相同。

一种解决方法是操纵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];
});
于 2013-09-06T18:01:08.287 回答