Допустим, вы открыли свой блог для гостевых авторов, вы создали для них пользователя, и, возможно, даже собственную роль. Скорее всего, у вас будет один или несколько пунктов меню, которые вы не захотите показывать гостевым авторам. Но как их спрятать? В этом коротком уроке мы рассмотрим, как из панели управления WordPress выборочно удалить определенные пункты меню в зависимости от конкретной роли пользователя.
Смотрите также:
Оказывается, это достаточно несложно: просто посмотрите URL-ы этих пунктов меню и затем используйте их для своей функции вот так:
add_action( 'admin_init', 'my_remove_menu_pages' );
function my_remove_menu_pages() {
global $user_ID;
if ( current_user_can( 'wpmayorauthor' ) ) {
remove_menu_page( 'edit.php?post_type=thirstylink' );
remove_menu_page( 'edit.php?post_type=wprss_feed' );
remove_menu_page( 'authorhreview' );
}
}Вот некоторые названия страниц меню для самых распространенных пунктов меню, стандартных в WordPress:
remove_menu_page('edit.php'); // Записи
remove_menu_page('upload.php'); // Медиафайлы
remove_menu_page('link-manager.php'); // Ссылки
remove_menu_page('edit-comments.php'); // Комментарии
remove_menu_page('edit.php?post_type=page'); // Страницы
remove_menu_page('plugins.php'); // Плагины
remove_menu_page('themes.php'); // Внешний вид
remove_menu_page('users.php'); // Пользователи
remove_menu_page('tools.php'); // Инструменты
remove_menu_page('options-general.php'); // ПараметрыЕсть также некоторые плагины, которые помогут вам, если вы не очень любите писать код самостоятельно.
Adminimize

Admin Menu Editor

И еще один бонусный совет. Если вы хотите для какой-то роли удалить возможность просмотреть список постов других пользователей, используйте следующий код:
add_action( 'load-edit.php', 'posts_for_current_contributor' );
function posts_for_current_contributor() {
global $user_ID;
if ( current_user_can( 'contributor' ) ) {
if ( ! isset( $_GET['author'] ) ) {
wp_redirect( add_query_arg( 'author', $user_ID ) );
exit;
}
}
}И, конечно, если вы еще не слышали об этом, вот отличный плагин для управления ролями и правами в WordPress:
Members






















Комментарии к записи: 4
Привет! У меня вопрос не по теме, но он меня волнует. Проблемы с плагином DB Cache Reloaded. Как я могу отправить скриншот с проблемой?
Нужно писать не admin_init, a admin_menu
где саму роль вписывать в скрипт?
2022: Скрипт не работает через functions.php