Редирект после авторизации в 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), в котором разработчик собирает уникальные дополнения и исправления к движку. Вот именно в такой модуль можно добавить код небольшого фильтра, выполняющего редирект после авторизации пользователя на нужную страницу. Собственно сам код.

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

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

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

Добавляем flash (swf) файлы в медиатеку сайта на Wordpress

Июнь 20, 2016 г.

Файлы Adobe Flash с расширением .swf нельзя загрузить в wordpress из коробки. Сделано так не без веских на то оснований. Но если вы осознаёте риски, то ...

Читать

Сохранение изображения (файла) из WPCF7

Июнь 11, 2018 г.

Еще одна задача, связанная с сохранением данных формы WP Contact Form 7 в базе WP, это загрузка и сохранение файла (обычно - изображения). Особенность работы WPCF7, заключается в том, что загруженный через форму временный файл, плагин переносит ...

Читать

 

Комментарии к «Редирект после авторизации в 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