WordPress 自定义注册登录移除 wp-login.php


在本站的文章 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;
});
  • 分享:
评论
还没有评论
    发表评论 说点什么