Я работаю на веб-сайте 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) && '[email protected]' == $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» из роли «Менеджер магазина», но пока не понял этого.
Вы можете использовать ловушку 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) && '[email protected]' == $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) && '[email protected]' == $user->user_email ) {
echo '<pre>';
print_r($_GLOBALS['menu']);
}
}
Используя приведенный выше код, вы увидите список всех всех меню.
Спасибо
Я только что понял проблему.
Если вы хотите удалить Visual Composer из определенной роли пользователя, вам нужно перейти в настройки Visual Composer через панель управления WordPress. Причина, по которой мой код, по моему вопросу, не работал, была в том, что настройки плагина Visual Composer переопределяли код в моем functions.php
файл.