У меня есть функция, которая перенаправляет пользователей на страницу входа (домой), если они пытаются получить доступ к любой другой странице без входа в систему, вот как это работает:
function restrict_access_if_logged_out(){
if (!is_user_logged_in() && !is_home()){
wp_redirect( get_option('home') );
}
}
add_action( 'wp', 'restrict_access_if_logged_out', 3 );
Действительно простой и хорошо работающий, проблема в том, что мне нужно перенаправить их на URL-адрес, на который они пытались перейти после успешного входа в систему, точно так же, как работает бэкэнд WordPress.
Есть ли способ сделать это? Заранее спасибо!
Попробуйте передать
the_permalink()
в качестве$redirect
аргумента:РЕДАКТИРОВАТЬ:
Извините, неправильно понял ваш вопрос изначально. Попробуй это:
Обратите также внимание: правильное использование
wp_redirect()
обычно требует добавленияexit;
, которое я добавил во второй пример.источник
Спасибо всем, я немного использовал то, что рекомендовали все, так что в конце мой код выглядит так:
И в моей форме входа (я жестко кодирую свою форму входа в моей заявке, спасибо @Ashfame за то, что сообщили мне о wp_login_form, я понятия не имел, что она существует), я добавил это, когда учетные данные пользователя в порядке, и они готовы войти:
Большое спасибо за вашу помощь, я проголосовал за всех!
источник
functions.php
exit()
илиdie()
послеwp_redirect()
. В противном случае возможно выполнение кода afterwp_redirect()
, что может привести к ошибкам и уязвимостям безопасности.это мой код, который я использую, чтобы направить людей на страницу входа в wp. Затем, когда вошли в систему, они вернулись туда, где они были. Но это не домашняя страница, а страница входа в WordPress, где я настраиваю пользовательский логин.
Вы могли бы хотеть исследовать с. Как правило, вы получите текущий URL пользователя по
$_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]
источник
login_redirect
Фильтр крюк является более полным и эффективным решением здесь. Таким образом, вы можете предлагать разные пути перенаправления для разных уровней пользователей или поддерживать URL перенаправления в случае ошибки при входе в систему (т.е. неверный пароль).источник
Это не сработало ни один из ваших ответов, но только добавив мелочь, это сработало! Вот мой код:
Только я добавил
/wp-login.php
по сравнению с ответом @ Matt, но для меня это был ключ. Надеюсь, это поможет! :)**РЕДАКТИРОВАТЬ:
Я обнаружил ОШИБКУ, когда вы НАСТРАИВАЕТЕ WordPress для перехода в HTTPS. Этот метод не работает, потому что перенаправление происходит в HTTP. Для решения проблемы я изменил функцию. Это результат:
Я проверяю протокол , а затем я удалил «
esc_url
» и добавил правильный протокол:$protocol://
. Также я изменил""
.Я основан на этой странице .
источник
Я знаю, что это очень поздно, но я сделал пост о том, как это сделать, если кто-то из будущих людей найдет это и будет нуждаться в этом:
http://www.ryanprejean.com/force-login-with-redirect-and-exceptions/
источник