Редирект после авторизации в wordpress

Задача практически типовая, потому что рано или поздно может понадобиться её решить. Специфика wordpress в довольно слабой документированности частных вопросов, что иногда отбивает охоту что то на нем делать.

После авторизации со страницы /wp-login.php мы оказываемся в админке (/wp-admin). Как можно исправить данную ситуацию и попасть в какое то более полезное место на сайте? Вот несколько разных подходов.

Задание параметра GET — redirect_to
Если заглянуть в код /wp-login.php, то мы увидим, что программа проверяет наличие такого параметра как redirect_to, который указывает куда  следует перейти после авторизации. Поэтому для авторизации пользователя мы можем составить специальный url на страницу авторизации, вроде такого:

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

Исправим переменную редиректа в коде страницы wp_login.php
Это некая полумера для любителей править код движка сайта. Мы можем явно задать переменную $redirect_to в коде, в том месте где идет вызов фильтров $redirect_to = apply_filters(‘login_redirect’, $redirect_to, … Ясно, что после обновления движка ваши исправления канут в лету, поэтому, если вы собираетесь поддерживать сайт в обновленном состоянии, это не ваш вариант.

Пишем фильтр
Типично, что любой сайт часто содержит какой то специфический модуль (user plugin), в котором разработчик собирает уникальные дополнения и исправления к движку. Вот именно в такой модуль можно добавить код небольшого фильтра, выполняющего редирект после авторизации пользователя на нужную страницу. Собственно сам код.

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

Написать комментарий

Мало букафф? Читайте есчо !

Выводим дополнительные столбцы для кастомных публикаций в админке WordPress

Апрель 21, 2016 г.

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

Читать

Модуль для WP Counter Integration

Октябрь 30, 2015 г.

На днях собрал модуль для подключения счетчиков на сайт под WP. Он позволяет добавить код Метрики Яши и Аналитики Гоши. Сегодня я его уже записал в репозиторий wordpress.org. Он решает задачу по размещению кода счетчика на страницах сайта, но не ...

Читать

 

Комментарии к «Редирект после авторизации в wordpress»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий:

Много комментариев в “Редирект после авторизации в wordpress”

  1. Владимир:

    А в какой именно файл «…cпецифического модля (user login)….» (я использую Cimy User Extra fields) и в какое место нужно добавить код этого фильтра?
    Спасибо!

    • Под «специфическим» я имел в виду какой либо самописный модуль для WP. Если у вас нет собственного кода дополняющего функционал, что тоже случается, то создайте собственный самый простейший модуль в папочке — /wp-content/plugins

      Назовите его, к примеру, mycode.php, и вставьте вначале что то вроде:
      /*
      Plugin Name: My redirect plugin
      Plugin URI: http://site.org/
      Description: Do simple tasks
      Version: 0.01
      Author: SHRA :)
      Author URI: http://shra.ru
      */

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

  2. Владимир:

    а как создавать свой плагин?
    я создал файл пхп, записал туда эти строки.. заархивировал..
    пробую добавить через страницу Установить плагины — Загрузить , мне выдано «Архив не удалось установить. Корректных плагинов не найдено.»
    как сделать что бы плагин был корректен?

  3. login2030:

    add_filter(‘login_redirect’, ‘_myplugin_lgn_redirect’); function _myplugin_lgn_redirect() { return ‘/some-page-on-my-website’; }

    Этот код можно вставить например в function.php своей темы?

  4. Попробуйте, скорее всего — да. Я в код модуля фильтры добавляю.

  5. Виталик:

    Спасибо за статью, очень помогла!!!
    Я вставил в function.php своей дочерней темы и сработало сразу.
    Вот еще одно дополнение может кому надо будет. Logout тоже нужен был с переходом на хоум, вот функция: add_action(‘wp_logout’,create_function(»,’wp_redirect(home_url());exit();’));

  6. Виталик:

    Ах да, почему не очень хочется вставлять в модуль, потому что он тоже имеет свойство обновляться.

  7. taganrogov:

    У меня сайт потух после этого

  8. Сид:

    Спасибо, полезная фишка)

  9. Виталий:

    здесь ошибка нижнее подчеркивание
    /wp_login.php?redirect_to=/some-page-on-my-website
    надо дефис
    /wp-login.php

  10. Петр:

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

    function login_redirect() {
    $Path=$_SERVER[‘REQUEST_URI’];

    return $Path;
    }
    add_filter(‘login_redirect’, ‘login_redirect’);

    но такая функция не работает, Подскажите что нужно исправить? Спасибо

    • Фактически вам нужно следующее
      1) принять данные пользователя (я так понимаю у вас уже есть форма авторизации)
      2) отправить эти данные по ajax на сервер
      3) по результату — сообщить об ошибке или перезагрузить текущую страницу, если авторизация прошла успешно.

      Но почему бы вам не воспользоваться уже готовым плагином вроде — https://ru.wordpress.org/plugins/login-with-ajax/