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

8 сент. 2012 г., 20:41:46
Просмотры: 18.9K
Голосов: 0

У меня есть пользовательская роль на сайте, и пользователи могут получить доступ только к странице своего профиля - это минимум, который требует WordPress. Однако аккаунты управляются нами, и это приватный сайт. Мы не хотим, чтобы пользователи могли изменять имя пользователя, email или пароль через WordPress.

Единственная текущая проблема - это вход в систему. Все внутренние страницы требуют авторизации. У нас есть лендинг со ссылкой на страницу входа, где мы используем параметр redirect_to=/blog/, и после входа пользователь попадает в блог. Это работает нормально.

Однако, если пользователь переходит по прямой ссылке на внутреннюю страницу (или получает её по email через настройки подписки), система потребует авторизации и перенаправит на страницу входа без параметра redirect_to. В результате пользователь попадает прямо на страницу профиля.

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

Вот функция, которую я создал с целью перенаправления в блог после входа. На данном этапе нам не важно, работают ли постоянные ссылки при первом посещении (они будут работать после входа).

Но эта функция не работает. wp_signon срабатывает не после входа пользователя, а используется для самого входа.

Что мне делать?

function login_redirect() {
    wp_redirect( get_bloginfo( 'url' ) . '/blog/' );
}
// Используем правильный хук для редиректа после входа
add_action('wp_login', 'login_redirect');`
0
Все ответы на вопрос 2
0

Есть два возможных решения вашей проблемы.

  1. Вы можете скачать плагин "Login redirect" отсюда: http://wordpress.org/extend/plugins/peters-login-redirect/

  2. Вы можете использовать фильтр login_redirect:

function my_login_redirect($redirect_to, $request) {
$redirect_url = get_bloginfo( 'url' ) . '/blog/';

return $redirect_url;
}
add_filter("login_redirect", "my_login_redirect", 10, 3);

Больше информации о фильтре login_redirect: http://codex.wordpress.org/Plugin_API/Filter_Reference/login_redirect

8 сент. 2012 г. 21:31:23
3
-1

Каждое из вышеперечисленных решений, кажется, перенаправляет пользователя на определённый заранее заданный URL.

Чтобы перенаправить пользователя на страницу, к которой он изначально пытался получить доступ, я думаю, это можно достичь только путем (тьфу) редактирования wp-login.php и изменения

$redirect_to = admin_url();

на

$redirect_to = $_SERVER[HTTP_REFERER];
15 мар. 2013 г. 03:16:54
Комментарии

Все будет потеряно при обновлении вашей установки WordPress...

RRikesh RRikesh
15 мар. 2013 г. 08:06:56

просто сделайте это в дочерней теме.

user2060451 user2060451
17 авг. 2016 г. 10:37:43

Никогда не следует редактировать файлы ядра WordPress.

Tom Tom
18 апр. 2018 г. 08:18:00