Допустим, вы открыли свой блог для гостевых авторов, вы создали для них пользователя, и, возможно, даже собственную роль. Скорее всего, у вас будет один или несколько пунктов меню, которые вы не захотите показывать гостевым авторам. Но как их спрятать? В этом коротком уроке мы рассмотрим, как из панели управления WordPress выборочно удалить определенные пункты меню в зависимости от конкретной роли пользователя.
Смотрите также:
Оказывается, это достаточно несложно: просто посмотрите URL-ы этих пунктов меню и затем используйте их для своей функции вот так:
1 2 3 4 5 6 7 8 9 10 11 | 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:
1 2 3 4 5 6 7 8 9 10 | 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
И еще один бонусный совет. Если вы хотите для какой-то роли удалить возможность просмотреть список постов других пользователей, используйте следующий код:
1 2 3 4 5 6 7 8 9 10 11 12 | 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