如何防止特定的 WordPress 菜单项出现在某些用户配置文件中?
How can I prevent specific WordPress Menu Items from appearing to certain User Profiles?
我在 WordPress 网站上工作,我想阻止某些用户配置文件访问特定的 WordPress 菜单项。我设法阻止了大多数需要 'hidden' 的菜单项,但是,我似乎无法删除 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 菜单项不能 'hidden' 的情况?
更新
我刚刚发现,要删除作为菜单项的 Visual Composer,您需要将 remove_menu_page('admin.php?page=vc-welcome');
替换为 remove_menu_page( 'vc-general' );
也就是说,这似乎只适用于具有用户角色 'Administrator' 的用户。
我正在尝试从 'Shop Manager' 角色中删除 'Visual Composer' 但尚未弄清楚。
您可以使用 admin_init 挂钩删除菜单:
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']);
}
}
通过使用上面的代码,您将看到所有菜单的列表。
谢谢
我刚刚弄清楚了问题。
如果您希望从特定用户角色中删除 Visual Composer,您需要通过 WordPress 仪表板进入 Visual Composer 设置。在我的问题中,我的代码不起作用的原因是因为 Visual Composer 插件设置覆盖了我的 functions.php
文件中的代码。
我在 WordPress 网站上工作,我想阻止某些用户配置文件访问特定的 WordPress 菜单项。我设法阻止了大多数需要 'hidden' 的菜单项,但是,我似乎无法删除 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 菜单项不能 'hidden' 的情况?
更新
我刚刚发现,要删除作为菜单项的 Visual Composer,您需要将 remove_menu_page('admin.php?page=vc-welcome');
替换为 remove_menu_page( 'vc-general' );
也就是说,这似乎只适用于具有用户角色 'Administrator' 的用户。 我正在尝试从 'Shop Manager' 角色中删除 'Visual Composer' 但尚未弄清楚。
您可以使用 admin_init 挂钩删除菜单:
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']);
}
}
通过使用上面的代码,您将看到所有菜单的列表。 谢谢
我刚刚弄清楚了问题。
如果您希望从特定用户角色中删除 Visual Composer,您需要通过 WordPress 仪表板进入 Visual Composer 设置。在我的问题中,我的代码不起作用的原因是因为 Visual Composer 插件设置覆盖了我的 functions.php
文件中的代码。