将Wordpress的登录/注册页面重定向到自定义登录/注册页面

Bru*_*ros 17 php wordpress redirect login registration

我有一个网站,有一个用户系统.我想将wordpress的用户系统集成到该网站中,但我仍然希望使用该网站的注册/登录页面.我不希望任何人能够使用Wordpress的登录或注册表登录或注册.相反,当他们尝试访问Wordpress中的登录/注册页面时,我希望这些页面将它们重定向到我自己的登录/注册页面.

有没有办法做到这一点?我已经尝试过谷歌了,但我能找到的只是在用户登录或注册后重定向,这不是我想要的.

先感谢您.

nic*_*hrn 24

为此,您需要将登录/注册页面重定向到您的自定义页面.因此,将此代码写入您的functions.php文件在您激活的主题文件夹下.将自定义页面路径作为参数传递.

 add_action('init','possibly_redirect');

function possibly_redirect(){
 global $pagenow;
 if( 'wp-login.php' == $pagenow ) {
  wp_redirect('http://google.com/');
  exit();
 }
}
Run Code Online (Sandbox Code Playgroud)

  • 应该补充的是,除非从目标登录页面明确地执行,否则执行此操作将禁用注销功能. (6认同)
  • Mayeenul,您只需要测试 'wp-login.php' == $pagenow ,如果您需要专门检测注册操作,请添加一个检查,如 (isset($_GET['action']) && 'register' == = $_GET['行动']) (2认同)

小智 17

要限制仅针对'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');
Run Code Online (Sandbox Code Playgroud)


bra*_*ilo 5

正确的操作钩子是login_init只在 上触发wp-login.php

这里没有?action=action-name请求,所以这是主登录页面:

add_action('login_init', function(){
    if( !isset( $_GET['action'] ) ) {
        wp_redirect( 'http://example.com' );
    }
});
Run Code Online (Sandbox Code Playgroud)

对于所有请求,我们可以使用特定的钩子login_form_ACTION-NAME,即,,,,,,,和。例子:postpasslogoutlostpasswordretrievepasswordresetpassregisterlogin

add_action('login_form_register', function(){
    wp_redirect( site_url('custom-registration/') );
});
Run Code Online (Sandbox Code Playgroud)