if (!current_user_can('administrator')) {
function remove_admin_menus () {
global $menu;
$removed = array(
__('WooCommerce'),
);
end ($menu);
while (prev($menu)){
$value = explode(
' ',
$menu[key($menu)][0]);
if(in_array($value[0] != NULL?$value[0]:"" , $removed)){
unset($menu[key($menu)]);
}
}
}
}
add_action('admin_menu', 'remove_admin_menus');
如果您是管理员,则此代码从Wordpress仪表板隐藏整个Woocommerce项目,但我没有找到解决方案来仅隐藏“订单”子菜单,而不隐藏整个项目。 谁有主意?
答案 0 :(得分:2)
您正在使用全局$menu
而不是$submenu
。然后,您将获得所有已注册的submenus
的列表。您可以添加以下代码。另外,最好在函数调用中检查用户是否为管理员
function remove_admin_menus(){
global $submenu;
if(current_user_can('administrator')){
unset($submenu['woocommerce']['1']);
}
}
add_action('admin_menu', 'remove_admin_menus');
更新
即使菜单被隐藏,只要知道网址,就可以访问该页面。因此,为了阻止对url的访问,请添加以下内容
function restrict_woo_submenu_userrole(){
$current_screen = get_current_screen();
$p_id = $current_screen->id;
if($p_id == 'edit-shop_order' && current_user_can('administrator')){
wp_die('Restricted Access.');
}
}
add_filter( 'current_screen', 'restrict_woo_submenu_userrole' );