在本站的文章 WordPress 自定义注册登录以及登陆后跳转到前端自定义用户中心中,我介绍了修改登录页面为自定义登陆页面的方法,那篇文章中没有解决移除 wp-login.php 的问题,今天查看一个主题的源代码的时候,发现了解决办法。
重定向 wp-login.php 到自定义登陆页面
方法其实很简单,在 WordPress 初始化的时候添加一个功能,判断访问 wp-login.php 的GET
请求,然后把这个请求重定向到自定义的登陆地址。为什么要判断GET
请求而不是连POST
一起判断了呢?因为自定义登陆需要向 wp-login.php 发送注册登录数据,POST
请求也跳转了,后台肯定就登陆不上了。当然,如果你在其他页面自定义了处理注册登录请求的方法,对 wp-login.php 发起的POST
也可以一起跳转了。
add_action('init', function(){
$page_viewed = basename($_SERVER['REQUEST_URI']);
if ($page_viewed === "wp-login.php" && $_SERVER['REQUEST_METHOD'] === 'GET'){
wp_redirect(home_url());
exit;
}
});
登陆失败后跳转到自定义登陆页面
登陆失败后,也要处理一下,跳转到一个自定义的登陆失败页面。
add_action('wp_login_failed', function(){
wp_redirect(home_url('?login=failed'));
exit;
});
登出后跳转到自定义登陆页面
然后是处理登出后跳转的链接,我们可以让用户登出后跳转到首页,或者一个自定义的错误页面。
add_action('wp_logout', function(){
wp_redirect(home_url('?login=failed'));
exit;
});
关于 "WordPress 自定义注册登录移除 wp-login.php "的一个想法
博主方法很赞,提供一种跟简单的方法