*我已将自定义贴子分类移到另一个菜单项
//created a post type that does not appear in admin menu, therefore its taxonomy does not, too
$args = array(
\'label\' => \'Item\',
\'description\' => \'Store items\',
\'labels\' => $labels,
\'supports\' => array( \'title\', \'editor\', \'thumbnail\', \'comments\', \'revisions\' ),
\'taxonomies\' => array( \'store-category\' ),
\'hierarchical\' => false,
\'public\' => true,
\'show_ui\' => true,
\'show_in_menu\' => false,
\'menu_position\' => 5,
\'menu_icon\' => \'dashicons-cart\',
\'show_in_admin_bar\' => true,
\'show_in_nav_menus\' => true,
\'can_export\' => true,
\'has_archive\' => true,
\'exclude_from_search\' => false,
\'publicly_queryable\' => true,
\'capability_type\' => \'post\',
\'rewrite\' => array(\'slug\' => \'product\')
);
register_post_type( \'tdlrm_store_item\', $args );
//registered a taxonomy
$args = array(
\'labels\' => $labels,
\'hierarchical\' => true,
\'public\' => true,
\'show_ui\' => true,
\'show_admin_column\' => true,
\'show_in_nav_menus\' => true,
\'show_tagcloud\' => false,
\'rewrite\' => array(\'slug\' => \'group\')
);
register_taxonomy( \'store-category\', array( \'tdlrm_store_item\' ), $args );
//added a submenu page for the taxonomy into another menu item
add_action(\'admin_menu\', \'tdlrm_configure_admin_menu1\',10);
function tdlrm_configure_admin_menu1(){
add_submenu_page(\'TDLRM\', \'category_redirect\', \'Categories\', \'administrator\', \'edit-tags.php?taxonomy=store-category&post_type=tdlrm_store_item\');
}
当我访问页面时,没有菜单项展开,我希望TDLRM项(以前创建的)展开。
*我为具有特定角色的用户创建了一个子菜单页。当我访问该页面时,它会展开“用户”菜单项。
add_action(\'admin_menu\', \'tdlrm_configure_admin_menu2\',10);
function tdlrm_configure_admin_menu2(){
add_submenu_page(\'TDLRM\', \'store_users_redirect\', \'Store users\', \'administrator\', \'users.php?role=tdlrm_store_user\');
}
我希望TDLRM项目可以扩展。
在写这个问题时,我也解决了一个类似的问题,尽管解决方案不适用于其他两个问题。
我已经创建了一个自定义帖子类型,它的slug是“fp-striser”。它创建了一个带有以下slug的管理菜单项:“编辑”。php?post\\u类型=fp摘要\'。
然后,我将新菜单项移动到另一个菜单项下,如下所示:
add_action(\'admin_menu\', \'tdlrmm__menu_edit\', 20);
function tdlrmm__menu_edit(){
// removing the page from top-level menu
remove_menu_page( \'edit.php?post_type=fp-teaser\');
// creating the page under My-menu
// (My-menu is a page I created earlier.)
add_submenu_page(\'My-menu\', \'Teasers\', \'Teasers\', \'edit_posts\', \'edit.php?post_type=fp-teaser\');
}
问题是当我访问
/wp-admin/edit.php?post_type=fp-teaser
, 没有展开菜单项。我想要的是
My-menu
要展开的项显示
Teasers
子菜单项。
找到后,此问题已解决this Q&A, 通过设置show_in_menu
参数到false
注册时fp-teaser
岗位类型。
最合适的回答,由SO网友:Sally CJ 整理而成
您可以使用parent_file
hook 确保TDLRM菜单在查看;存储用户“;或“或”;“类别”;页
add_filter( \'parent_file\', \'wpse_398962_parent_file\' );
function wpse_398962_parent_file( $parent_file ) {
global $submenu_file, $typenow;
// 1: This is for highlighting the TDLRM » "Store users" submenu.
if ( \'users.php\' === $parent_file && ! $submenu_file &&
isset( $_GET[\'role\'] ) && \'tdlrm_store_user\' === $_GET[\'role\']
) {
$typenow = true; // this trick ensures the parent file/slug is TDLRM
// This highlights the "Store users" submenu.
// Make sure it matches the slug you passed to add_submenu_page().
$submenu_file = \'users.php?role=tdlrm_store_user\';
return \'TDLRM\';
}
// 2: This is for highlighting the TDLRM » Categories submenu.
// Make sure the value matches the slug you passed to add_submenu_page().
if ( \'edit-tags.php?taxonomy=store-category&post_type=tdlrm_store_item\' === $submenu_file ) {
return \'TDLRM\';
}
return $parent_file;
}
Notes:
<上面有一个技巧用于扩展TDLRM菜单,但只有在查看;存储用户“;页
这个技巧的作用是防止get_admin_page_parent()
从更改父文件($parent_file
) 到users.php
.
WordPress会转义特殊字符,如符号和(so&
成为&
) 在菜单/子菜单中slug, 因此,您的;“类别”;子菜单需要使用有效/正确转义的slug,以便在查看TDLRM»类别页面时突出显示子菜单。
// Note below I used & instead of just &
add_submenu_page(\'TDLRM\', \'category_redirect\', \'Categories\', \'administrator\',
\'edit-tags.php?taxonomy=store-category&post_type=tdlrm_store_item\');
实际上,不必使用
tdlrmm__menu_edit()
函数,您可以简单地设置
show_in_menu
arg到
My-menu
(菜单slug),然后;挑逗者“;(或您的帖子类型的(复数)标签)将显示为您的;“我的菜单”;菜单
但是,请务必阅读注释here 上面写着此项目将成为first submenu item, 并替换顶级链接的位置。如果不需要,创建菜单页的插件需要将add\\u action priority for admin\\u菜单设置为9或更低;。