WordPress登录跳转到登录前页面就是比如我们在当前在A页面想评论,然后登录是B页面才能登录,这时候我们就需要定位在B页面登录成功后自动跳转到A页面。
结合以上理论,以下是一个在WordPress中实现登录后跳转到登录前页面的方法代码示例供大家参考学习:
php
// 保存登录前的URL
function save_login_redirect_url() {
if (!is_user_logged_in() &&!isset($_COOKIE['login_redirect_url']) &&!is_admin()) {
$redirect_url = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on'? "https" : "http")
. "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
setcookie('login_redirect_url', $redirect_url, time() + 3600, COOKIEPATH, COOKIE_DOMAIN);
}
}
add_action('init', 'save_login_redirect_url');
// 登录后重定向到登录前页面
function custom_login_redirect( $redirect_to, $request, $user ) {
if (isset($_COOKIE['login_redirect_url'])) {
$redirect_to = sanitize_text_field($_COOKIE['login_redirect_url']);
setcookie('login_redirect_url', '', time() - 3600, COOKIEPATH, COOKIE_DOMAIN);
}
return $redirect_to;
}
add_filter('login_redirect', 'custom_login_redirect', 10, 3);
1. 首先,“save_login_redirect_url”函数的作用是:
在用户未登录、没有设置名为“login_redirect_url”的cookie并且不在管理页面时执行。
它构建了当前页面的URL(包括协议、主机和请求的URI部分)。
然后设置一个名为“login_redirect_url”的cookie,有效期为1小时(3600秒)。
2. 其次,“custom_login_redirect”函数:
它是“login_redirect”过滤器的回调函数。
如果设置了“login_redirect_url”这个cookie,它就会将重定向的目标“$redirect_to”设置为该cookie的值。
然后清除这个cookie,以避免下次登录时出现重定向问题。
最后,请注意这只是一个基本的示例,你可能需要根据具体的需求对代码进行调整,比如添加更多的安全验证等。