我有很多CPT和自定义分类,并决定将它们放在几个子菜单中。效果很好。稍后我将解释我是如何做到这一点的,但问题是,当你选择“新术语”或“新帖子”时,管理员的侧栏菜单会失去位于子菜单中的轨迹,并折叠菜单。严格来说,这并不重要,因为您可以添加该项目,然后重新打开管理菜单,但这是一个刺激,我想删除。
为了帮助解释我的问题,我提供了一些屏幕截图。当我打开“LG参考数据/计量单位”的菜单/子菜单时,这里是管理菜单:
到目前为止,一切都很好。顺便说一句,UOM是CPT(非税)。现在,如果我单击编辑顶部的“添加新”按钮。php页面然后会很好地显示页面,但管理菜单会折叠为如下所示:
这是主要的问题,但有一个小推论,它与税收的行为有关。在最初的屏幕截图中,您看到了一个名为“UOM上下文”的子菜单,它是一种分类法。默认情况下,单击该选项会立即折叠“管理”菜单,但我已经找到了一种解决方法(稍后会详细介绍),但当我单击“UOM上下文”链接时,我的解决方案仍然会使菜单保持如下所示:
请注意,虽然它没有折叠,但没有突出显示(又名黑体)子菜单选项。
因此,让我向您展示我用来设置此功能的代码(尽管对于尝试这样做的人来说,这可能是相当标准的代码)。从执行角度来看,第一件事是注册CPT和税务。CPT的诀窍是使用“show\\u in\\u menu”(在菜单中显示),并将其设置为它将位于的菜单页的名称:
// Default args
array(
\'label\' => $plural,
\'labels\' => $labels,
\'public\' => true,
\'show_ui\' => $this->show_menu,
\'show_in_menu\' => $this->show_in_menu,
\'supports\' => array( \'title\', \'editor\' , \'excerpt\'),
\'show_in_nav_menus\' => true,
\'menu_icon\' => LG_FE_DIR . "/img/lg-admin.png",
\'menu_position\' => $this->get_menu_priority(),
\'_builtin\' => false,
),
请注意,这对于税务来说是不必要的,在我的实验中,它似乎没有任何效果,所以我只是暂时停止了它。第二步是add\\u menu\\u page和add\\u submenu\\u page调用:
add_menu_page ("LG Ref Data", "LG Ref Data", "manage_options", LG_REFDATA_MENU, "LG_AdminMenuSystem::show_reference_menu", plugins_url ("/img/LG.png", __DIR__), 61.1);
add_submenu_page (LG_REFDATA_MENU,"UOMs","UOMs","manage_options",\'edit.php?post_type=uoms\');
add_submenu_page (LG_REFDATA_MENU,"UOM Context","UOM Context","manage_options",\'edit-tags.php?taxonomy=uom-contexts&post_type=uoms\');
array_push (self::$tax_correct, "uom-contexts");
非常标准的东西,除了我前面提到的最后一行,这是我的税务修复的开始(即,在选择税务项目时阻止菜单崩溃,但在添加新项目时不会阻止它)。以下是修复的实际代码:
static public function tax_menu_correction ($parent_file) {
global $current_screen;
$taxonomy = $current_screen->taxonomy;
if ( in_array($taxonomy,self::$tax_correct) )
$parent_file = LG_REFDATA_MENU;
return $parent_file;
}
然后从以下挂钩调用:
add_action( \'parent_file\' , \'LG_AdminMenuSystem::tax_menu_correction\'); // helps to keep the menu selection on the menu when choosing a custom TAX
就是这样。我们将不胜感激。