我正在使用WordPress网站,我希望阻止某些用户配置文件访问特定的WordPress菜单项。我已设法阻止大多数需要“隐藏”的菜单项,但我似乎无法删除WordPress仪表板,WooCOmmerce或Visual Composer。
我在functions.php
输入了以下代码,但菜单项仍然显示:
<?php
function remove_admin_menu_links(){
$user = wp_get_current_user();
if( $user && isset($user->user_email) && 'name@domain.com' == $user->user_email ) {
remove_menu_page('index.php'); // WordPress Dashoboard
remove_menu_page('edit.php?post_type=shop_order.php'); // WooCommerce
remove_menu_page('admin.php?page=vc-welcome'); // Visual Composer
}
}
add_action('admin_menu', 'remove_admin_menu_links');
?>
我有什么问题或是某些WordPress菜单项无法“隐藏”的情况吗?
更新
我刚刚发现,为了删除Visual Composer,作为菜单项,您需要将remove_menu_page('admin.php?page=vc-welcome');
替换为remove_menu_page( 'vc-general' );
也就是说,这似乎只适用于具有“管理员”用户角色的用户。 我试图从“店铺经理”角色中删除“Visual Composer”,但还没想到这一点。
答案 0 :(得分:0)
您可以使用admin_init hook删除菜单:
add_action('admin_init','remove_admin_menu_links');
function remove_admin_menu_links (){
$user = wp_get_current_user();
if( $user && isset($user->user_email) && 'name@domain.com' == $user->user_email ) {
remove_menu_page('index.php'); // WordPress Dashoboard
remove_menu_page('edit.php?post_type=shop_order.php'); // WooCommerce
remove_menu_page('admin.php?page=vc-welcome'); // Visual Composer
}
}
对于此功能下的调试,请添加以下行
function remove_admin_menu_links (){
$user = wp_get_current_user();
if( $user && isset($user->user_email) && 'name@domain.com' == $user->user_email ) {
echo '<pre>';
print_r($_GLOBALS['menu']);
}
}
通过使用上面的代码,您将看到所有菜单的列表。 感谢
答案 1 :(得分:0)
我刚刚发现了问题。
如果要从特定用户角色中删除Visual Composer,则需要通过WordPress仪表板进入Visual Composer设置。在我的问题中,我的代码不起作用的原因是因为Visual Composer插件设置覆盖了我functions.php
文件中的代码。