Допустим, вы открыли свой блог для гостевых авторов, вы создали для них пользователя, и, возможно, даже собственную роль. Скорее всего, у вас будет один или несколько пунктов меню, которые вы не захотите показывать гостевым авторам. Но как их спрятать? В этом коротком уроке мы рассмотрим, как из панели управления 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:
Комментарии к записи: 4
Привет! У меня вопрос не по теме, но он меня волнует. Проблемы с плагином DB Cache Reloaded. Как я могу отправить скриншот с проблемой?
Нужно писать не admin_init, a admin_menu
где саму роль вписывать в скрипт?
2022: Скрипт не работает через functions.php