Как ограничить доступ к своей консоли WordPress

Ограничение доступа к консоли WordPress является тем вопросом, который волнует многих пользователей на разных форумах. Создаете ли вы сайт для вашего клиента, который не знает, чем WordPress отличается от Microsoft Word, или же просто хотите ограничить круг пользователей, имеющих доступ к консоли, — вне зависимости от причин вам может понадобиться «закрыть двери» к консоли перед некоторыми пользователями.

К счастью, есть много вариантов сделать это. В данной статье я быстро пробегусь по основным методам ограничения доступа к консоли, начиная с настройки прав для пользователей, что встроено в WordPress, и заканчивая написанием кода и установкой плагинов.

limit-dashboard-access-feature-image

Ограничение доступа при помощи пользовательских ролей и возможностей в WordPress

add-new-userВ WordPress используются роли и возможности, позволяющие определять, кто и что может делать в границах одного WP-сайта. Настройка пользовательских прав является базовым путем ограничения доступа к особенностям бэкэнда сайта.

Вообще, существует шесть видов ролей: супер администратор (для мультисайтов), администратор, редактор, автор, участник и подписчик.

Владельцы сайта могут использовать данные роли для управления тем, кто имеет доступ к написанию и редактированию записей, созданию рубрик, управлению комментариями, созданию страниц, заданию ссылок, управлению темами и другими пользователями – для этого достаточно привязать определенную роль тому или иному пользователю.

Супер администраторы могут получать доступ ко всем областям мультисайтовой сборки, в то время как администратор может получить доступ ко всем областям регулярной сборки, состоящей из одного сайта. Каждая последующая роль имеет все более и более сужающийся круг возможностей. Базовая роль, подписчик, может только управлять своим профилем – они не могут писать или редактировать записи, изменять параметры и т.д.

Если вам требуется простой способ ограничения того, какие пользователи могут получать доступ к вашему бэкэнду, вы можете автоматически привязывать всем новым пользователем роль Подписчика. Роль по умолчанию задается в разделе Параметры – Общие.

Ограничение доступа к WordPress с помощью кода

Допустим, у вас есть сайт сообщества, где пользователи могут регистрироваться, однако вы не хотите, чтобы у них был доступ к wp-admin. Если вы хотите закрыть доступ к консоли для всех пользователей, кроме администраторов,  просто вставьте следующий код в файл functions.php:

add_action( 'init', 'blockusers_init' );
function blockusers_init() {
if ( is_admin() && ! current_user_can( 'administrator' ) &&
! ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) {
wp_redirect( home_url() );
exit;
}
}

Теперь доступ к wp-admin смогут получить только администраторы. Все остальные будут просто перенаправлены на главную страницу.

Ограничение доступа к WordPress с помощью плагинов

Существует несколько простых плагинов, которые помогают закрыть от пользователей вход в консоль.

Login Redirect

Login Redirect – плагин от WPMU DEV, позволяющий быстро перенаправлять пользователей, которые зарегистрированы на вашем сайте, на любую выбранную страницу. К примеру, после того, как пользователи войдут под своим логином, вы можете отправить их на страницу сообщества вашего сайта или перенаправить к редактору записей.

Плагин просто в использовании – после установки и активации вам достаточно перейти на страницу Параметры – Общие и добавить в поле «Login Redirect» URL, куда будет совершаться перенаправление.

WP Hide Dashboard

Этот удобный плагин позволяет вам скрывать меню консоли, раздел личных настроек и ссылку Help на странице профиля от пользователей, которые имеют роль подписчиков. Таким образом, ваши подписчики будут видеть только базовую страницу профиля.

Плагин не нуждается в настройках и поставляется «из коробки».

Remove Dashboard Access

Данный плагин позволяет вам разрешать доступ к консоли только для администраторов или пользователей с определенными возможностями. Вы можете также выбирать, могут ли пользователи редактировать свои профили в консоли.

Пользователи, которые не являются администраторами или не имеют определенных возможностей, будут перенаправлены на выбранный вами URL.

Чтобы настроить плагин, перейдите в раздел Параметры — Dashboard Access и выберите параметры для пользовательского доступа и перенаправления.

Заключение

Ограничение доступа к вашей консоли WordPress не является таким уж сложным действием. В данной статье мы предложили несколько простых способов закрыть вход в консоль для пользователей, оставив доступ только для администраторов. Вы можете сами решить, какой способ вам больше подходит – с помощью плагинов, с помощью кода или с помощью дефолтных настроек WordPress.

Источник: premium.wpmudev.org/blog

Блог про WordPress
Комментарии: 22
  1. Anton

    Давно хотел сделать или доступ только для админов или реализовать login attempts. Короче, впихнул в functions вышеописанный код, а то уж очень хочется снизить до минимума число плагинов. Часть уже удалил, надо будет дочистить остальные.
    Благодарю за наводку :)

  2. Серж

    Ограничение доступа с помощью кода не работает (
    А с помощью плагинов не охота сильно нагружать WP.

  3. Elena

    Здравствуйте!
    Воспользовалась Вашим советом, вставила код
    add_action( ‘init’, ‘blockusers_init’ );
    function blockusers_init() {
    if ( is_admin() && ! current_user_can( ‘administrator’ ) &&
    ! ( defined( ‘DOING_AJAX’ ) && DOING_AJAX ) ) {
    wp_redirect( home_url() );
    exit;
    }

    Теперь пользователи не имеют доступа к админ-панели, однако и не могут отредактировать свой профиль. Они входят на сайт под своим логином, нажимают на «профиль» и сайт их перебрасывает на главную страницу.
    Как сделать так, чтобы пользователи имели доступ к редактированию своего профиля?
    Профиль находится на странице http://…/vash-profil/

    1. Дмитрий (автор)

      Воспользуйтесь плагином https://wordpress.org/plugins/remove-dashboard-access-for-non-admins/. Там есть такая опция, разрешающая вход в профиль.

  4. Elena

    К сожалению, плагин не подходит, т.к. сайт перегружен уже плагинами и нужны способы без плагинов это сделать.

    1. Дмитрий (автор)

      А это миф, что якобы плагины нагружают сайт сильнее, чем код, добавленный в functions.php.
      Нагружают они одинаково сайт.
      Здесь основным моментом является только тот факт, что плагины порой несут в себе дополнительные лишние возможности, и ради двух-трех функций ставить весь плагин — это глупо.
      Вы можете распотрошить плагин и посмотреть, как в нем это реализовано, и взять необходимый участок кода себе.

  5. Elena

    Конкретно на моем сайте было проверено, что чем больше плагинов, тем уже сайт работает. Так что миф не миф, а проверенный факт. Если бы умела «распотрошить плагин», то не обращалась бы )

    1. Дмитрий (автор)

      Безусловно, но и от расширения functions.php сайт работать быстрее не станет :) Это так, оффтоп. Я, к сожалению, помочь с этим не могу, поскольку нет свободного времени, чтобы разодрать плагин в локальной сборке.

  6. Волшебник

    Установка кеширующего плагина снимает все вопросы с нагрузкой, хоть сотню плагинов ставьте, нагрузки не будет.

  7. Елена

    Спасибо за полезную информацию.

  8. Ярослав

    Друзья! Код отлично работает!

    Но возникла загвоздка! Пользователь с правами редактора, которого я использую чтобы постить статьи и не палить логин администратора, не может теперь войти в консоль!

    Это логично, потому что он не является if ( is_admin() && ! current_user_can( ‘administrator’ )!

    Но как теперь написать такой же код и для редактора? Типа if ( is_editor() && ! current_user_can…

    Что там дальше написать?? ))

  9. Otshelnik-fm

    ярослав — Editor

    1. Ярослав

      То есть правильно ли я понимаю — надо ещё добавить вот такой код?:

      add_action( ‘init’, ‘blockusers_init’ );
      function blockusers_init() {
      if ( is_editor() && ! current_user_can( ‘editor’ ) &&
      ! ( defined( ‘DOING_AJAX’ ) && DOING_AJAX ) ) {
      wp_redirect( home_url() );
      exit;
      }
      }

      Right?

      Посмотрите, пожалуйста. А я пока протестирую этот вариант. Если кому будет интересно — комментируйте здесь — я сообщу о результате! ))

  10. Otshelnik-fm

    Достаточно одного с перечислениями:

    add_action( ‘init’, ‘blockusers_init’ );
    function blockusers_init() {
    if ( is_admin() && !current_user_can( ‘editor’ ) && !current_user_can( ‘administrator’ ) &&
    ! ( defined( ‘DOING_AJAX’ ) && DOING_AJAX ) ) {
    wp_redirect( home_url() );
    exit;
    }
    }

    я правда не проверял, но примерно так.

    1. Ярослав

      Спасибо! Код, в какой-то степени, сработал! ))

      То есть редактору теперь открыт вход в админку. Но и пользователям со всеми другими ролями тоже! ))

      Тут для меня кое-что прояснилось — ведь этот код подходит тогда, когда на сайте открытая регистрация. А в моём случае открытой регистрации нет. А редактора я могу добавить и вручную.

      Нерешённым у меня остался только вопрос — как скрыть логин автора с определённым ID.
      Я вот вижу что вы и не заморачиваетесь с этим — логин на виду. Автор данного сайта тоже не скрывает свой логин. Может и мне оставить уже всё как есть?..

      Кстати у вас интересный сайт! Положил в закладки! ))

      1. Ярослав

        Нет всё таки мне нужен этот код. Потому что без него остаётся на виду адрес входа в админку.

        Наверное придётся всё постить от имени администратора. Ну да ладно! Имя администратора ещё надо найти!

        Может быть потом найдётся решение. ))

  11. Дмитрий (автор)

    Мало ли, что выводится имя Дмитрий, логин все равно другой. Да и защита от всяких брутфорсов стоит.

  12. Сергей

    Спасибо.

  13. Геннадий

    Спасибо за код!!! все так просто.

  14. Nelli

    Спасибо за статью, очень помогла. Долго не могла настроить консоль на сайте мастеров красоты. Теперь все работает

  15. Юрий

    Спасибо, хорошая статья!

  16. Сергей

    Доброго времени суток! Подскажите пожалуйста как ограничить доступ именно в раздел пользователи, конкретно профиль, мне важно что бы пользователь не мог сменить свой пароль. А то есть умники которые ставят qwerty ))) Спасибо!

Добавить комментарий для Сергей Отменить ответ

Получать новые комментарии по электронной почте.