我有一个网站,有一个用户系统。我想将 wordpress 的用户系统集成到该网站的系统中,但我仍然想使用该网站的注册/登录页面。我不希望任何人能够使用 Wordpress 的登录或注册表单登录或注册。相反,当他们尝试访问 Wordpress 中的登录/注册页面时,我希望这些页面将它们重定向到我自己的登录/注册页面。
有没有办法做到这一点?我试过谷歌,但我能找到的只是用户登录或注册后的重定向,这不是我想要的。
先感谢您。
我有一个网站,有一个用户系统。我想将 wordpress 的用户系统集成到该网站的系统中,但我仍然想使用该网站的注册/登录页面。我不希望任何人能够使用 Wordpress 的登录或注册表单登录或注册。相反,当他们尝试访问 Wordpress 中的登录/注册页面时,我希望这些页面将它们重定向到我自己的登录/注册页面。
有没有办法做到这一点?我试过谷歌,但我能找到的只是用户登录或注册后的重定向,这不是我想要的。
先感谢您。
为此,您需要将登录/注册页面重定向到您的自定义页面。因此,将此代码写入您的文件中functions.php您激活的主题文件夹下。将您的自定义页面路径作为参数传递。
 add_action('init','possibly_redirect');
function possibly_redirect(){
 global $pagenow;
 if( 'wp-login.php' == $pagenow ) {
  wp_redirect('http://google.com/');
  exit();
 }
}
为了限制仅对“wp-login.php”的直接访问,没有 POST 或 GET 请求(对自定义 ajax 登录表单有用),我使用了高级功能:
function possibly_redirect(){
  global $pagenow;
  if( 'wp-login.php' == $pagenow ) {
    if ( isset( $_POST['wp-submit'] ) ||   // in case of LOGIN
      ( isset($_GET['action']) && $_GET['action']=='logout') ||   // in case of LOGOUT
      ( isset($_GET['checkemail']) && $_GET['checkemail']=='confirm') ||   // in case of LOST PASSWORD
      ( isset($_GET['checkemail']) && $_GET['checkemail']=='registered') ) return;    // in case of REGISTER
    else wp_redirect( home_url() ); // or wp_redirect(home_url('/login'));
    exit();
  }
}
add_action('init','possibly_redirect');
正确的动作钩子是login_init只在wp-login.php.
在这里,没有?action=action-name请求,所以它是主登录页面:
add_action('login_init', function(){
    if( !isset( $_GET['action'] ) ) {
        wp_redirect( 'http://example.com' );
    }
});
对于所有请求,我们可以使用特定的钩子login_form_ACTION-NAME,即, postpass, logout, lostpassword, retrievepassword,和。例子:resetpassregisterlogin
add_action('login_form_register', function(){
    wp_redirect( site_url('custom-registration/') );
});
如果您正在使用自定义登录页面,但仍在使用 wp_login_form(),请注意表单将 POST 到 wp-login.php,因此您需要在重定向之前检查 $_POST 是否为空。
function prefix_wp_login_redirect() {
  global $pagenow;  
  if( $pagenow == 'wp-login.php' && empty($_POST)) {
    auth_redirect();
    exit();
  }
}
您可能能够锁定login_head钩子并在那里发出重定向。