Как перенаправить пользователя после входа в WordPress

Нужно перенаправить пользователя на определенную страницу WordPress после входа? По умолчанию система перенаправляет на панель мониторинга (Консоль) или в раздел его профиля. Посмотрим 2 способа, как лекго изменить это поведения.

Зачем перенаправлять после авторизации?

Часто на сайтах со сложной структурой от пользователя требуются определенные действия после входа в систему. Например, в интернет-магазине после нажатия кнопки Купить и авторизации, он должен быть перемещен в раздел оформления заказа. Аналогичная ситуация с новостными многоавторскими сайтами.

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

Разберем детально, как это сделать на любом сайте WordPress.

Метод 1. Плагин Peter’s Login Redirect

Это простой способ, который позволяет настраивать перенаправления входа в систему на основе пользовательских ролей и разрешений (см. Как добавить новую роль пользователя в WordPress).

Для начала установите и активируйте Peter’s Login Redirect.

Дальше в админке перейдите Настройки > Login/logout redirects.

Настройка плагина Peter's Login Redirect

Опции позволяют настроить перенаправления для конкретных ситуаций:

  • пользователи,
  • роли,
  • уровни доступа.

Для примера будем перенаправлять всех вошедших в систему пользователей с ролью Редактор в админ-раздел Записи.

Для этого найдите раздел Роли, в опции Добавить выберите editor, задайте URL-ссылку в поле Ссылка входа и нажмите кнопку Добавить правило роли.

Настройка перенаправления в Peter's Login Redirect

Опция Ссылка выхода служит для редиректа после выхода из системы.

Чтобы ваши правки сработали, кликните Обновить в самом низу.

Метод 2. Вручную с помощью PHP-кода

Этот способ сложнее. Нужно редактировать файлы темы.

Все последующие действия предполагают редактирование functions.php — основного конфигурационного файла WordPress-темы. Если вы не знаете, как редактировать этот файл, то в этом случае поможет плагин ProFunctions.

Откройте functions.php активной ВордПресс-темы на сайте и добавьте строки:

function redirect_users_after_login() {
    $user = wp_get_current_user();
    $roles = ( array ) $user->roles;
    
    // Редирект для администраторов
    if ( $roles[0] == 'administrator' ) {
         wp_redirect( 'https://site.ru/page_for_admin' );
         exit;
    }
    
    // Редирект для подписчиков
    if ( $roles[0] == 'subscriber' ) {
         wp_redirect( 'https://site.ru/page_for_subscriber' );
         exit;
    }

    // Редирект для авторов
    if ( $roles[0] == 'author' ) {
         wp_redirect( 'https://site.ru/page_for_author' );
         exit;
    }

    // Редирект для редакторов
    if ( $roles[0] == 'editor' ) {
         wp_redirect( 'https://site.ru/page_for_editor' );
         exit;
    }

}
add_action( 'admin_init', 'redirect_users_after_login' );

В коде добавлены перенаправления для администраторов, подписчиков, редакторов и авторов. В функции wp_redirect() нужно вписать страницу для редиректа. Ненужные роли пользователей можно удалить.

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

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

Если Вам понравилась статья — поделитесь с друзьями
Михаил Петров
Привет! Меня зовут Михаил Петров. Я копирайтер и занимаюсь этим с 2013 года. Скрупулезность и ответственность - моя фишка! Не могу делать как попало и добиваюсь, чтоб заказчик сказал минимум “неплохо”. За все время своей работы пришлось написать и отредактировать немало разной “текстовухи”, включая SEO-тексты, отзывы и прочую чушь. На сегодняшний день специализируюсь на написании информационных статей и руководств технического направления. Вижу смысл и светлое будущее в текстах для людей, а не для машин.
Обсуждение: 4
  1. Андрей

    Супер спасибо за инфу, была очень полезна!

  2. Николай

    Здравствуйте! Работает после замены хука на wp_login

    add_action( ‘wp_login’, ‘redirect_users_after_login’, 20 , 2);
    function redirect_users_after_login($user_login, $user) {
    $role = $user->roles;
    if ($role[0] == ‘wholesale_customer’) {
    wp_redirect( home_url(‘/dobro-pozhalovat/’) );
    exit;
    }
    } успешно отправляет оптовых покупателей на страницу “добро пожаловать”, но в меню сайта (создано через админку-внешний вид-меню) ссылка на главную страницу отправляет в личный кабинет пользователя! Я в недоумении, пожалуйста, подскажите, как это поправить. Спасибо!

    1. Михаил Петров author

      Здравствуйте.

      Возможно где-то еще прописаны перенаправления. Посмотрите среди активных плагинов.

      С уважением Михаил

  3. Александр

    Спасибо большое за статью!
    Но к сожалению ни плагин ни код, не заработали ((

Задать вопрос