Редактор Gutenberg в WordPress — мощный инструмент для создания контента, однако в некоторых случаях требуется ограничить его отображение для определённых ролей пользователей. Например, если вы хотите, чтобы редакторы или авторы использовали классический редактор или альтернативные инструменты, а не Gutenberg, то нужно программно запретить показ Gutenberg именно для этих ролей.
Почему стоит ограничить Gutenberg для некоторых ролей
Gutenberg, хоть и улучшает визуальное редактирование, может сбивать с толку пользователей, привыкших к классическому редактору. Особенно это актуально для сайтов с большим количеством редакторов, которым нужна простота и стабильность. Кроме того, некоторые кастомные плагины или темы могут не поддерживать Gutenberg полностью, создавая ошибки для определённых пользователей.
Ограничение отображения редактора помогает:
- Упростить интерфейс для непрофессиональных пользователей;
- Избежать проблем совместимости с плагинами и темами;
- Сохранять стандарты оформления контента на сайте;
- Управлять правами доступа более гибко.
Как определить роль пользователя в WordPress
Перед тем, как отключить Gutenberg, нужно уметь проверять роль текущего пользователя. В WordPress роли — это наборы прав, которые задаются пользователям, например, 'administrator', 'editor', 'author', 'contributor' и т.д.
Для проверки роли в PHP можно использовать функцию current_user_can() или получить объект пользователя и проверить его роли напрямую:
function wp1_get_current_user_roles() {
$user = wp_get_current_user();
return (array) $user->roles;
}Однако чаще всего достаточно current_user_can(), например:
if (current_user_can('editor')) {
// Действия для редакторов
}Запрет отображения Gutenberg для выбранных ролей
WordPress позволяет отключить Gutenberg для определённых ролей с помощью фильтра use_block_editor_for_post. Следующий код демонстрирует, как это сделать для ролей 'editor' и 'author'.
function wp1_disable_gutenberg_for_roles( $use_block_editor, $post ) {
if ( current_user_can('editor') || current_user_can('author') ) {
return false; // Отключаем Gutenberg
}
return $use_block_editor;
}
add_filter( 'use_block_editor_for_post', 'wp1_disable_gutenberg_for_roles', 10, 2 );Этот код можно добавить в файл functions.php вашей активной темы или в отдельный плагин. Он проверяет роль текущего пользователя и, если это редактор или автор, возвращает false — редактор Gutenberg не загружается, будет показан классический редактор.
Расширение списка ролей
Если нужно отключить Gutenberg для большего количества ролей, лучше сделать проверку через массив:
function wp1_disable_gutenberg_for_selected_roles( $use_block_editor, $post ) {
$restricted_roles = array('editor', 'author', 'contributor');
$user = wp_get_current_user();
if ( array_intersect( $restricted_roles, $user->roles ) ) {
return false;
}
return $use_block_editor;
}
add_filter( 'use_block_editor_for_post', 'wp1_disable_gutenberg_for_selected_roles', 10, 2 );Отключение Gutenberg для определённых типов записей
Иногда нужно оставить Gutenberg включенным для большинства типов записей, но отключить его, например, для страниц или кастомных типов. Для этого можно дополнительно проверить тип записи:
function wp1_disable_gutenberg_for_post_type_and_roles( $use_block_editor, $post ) {
$restricted_roles = array('editor', 'author');
$restricted_post_types = array('page', 'custom_post_type');
$user = wp_get_current_user();
if ( array_intersect( $restricted_roles, $user->roles ) && in_array( $post->post_type, $restricted_post_types ) ) {
return false;
}
return $use_block_editor;
}
add_filter( 'use_block_editor_for_post', 'wp1_disable_gutenberg_for_post_type_and_roles', 10, 2 );Так вы получите точечный контроль над тем, кто и где видит Gutenberg.
Использование плагинов для управления редакторами
Если код не удобен или нужно более гибкое управление, можно использовать плагины:
- Classic Editor — официальный плагин, который позволяет полностью отключать Gutenberg или включать классический редактор по ролям.
- Gutenberg Disable — простой плагин для отключения Gutenberg для выбранных ролей.
Но если вы хотите избежать лишних плагинов, то кодовые решения из статьи — лучший вариант.
Выводы и рекомендации
Отключение Gutenberg для отдельных ролей помогает контролировать опыт пользователей, упрощает работу и предотвращает ошибки. При этом важно тестировать изменения, чтобы не нарушить рабочие процессы редакторов.
Используйте фильтр use_block_editor_for_post, добавляйте проверки ролей и типов записей, корректно размещайте код — и вы получите стабильное и предсказуемое поведение редакторов WordPress на вашем сайте.
Для более удобного управления можно также обратить внимание на плагины, например, Classic Editor от WPSHOP, который интегрируется с административной панелью и позволяет быстро переключать редакторы для разных ролей.