web-dev-qa-db-ja.com

Wordpressのログイン/登録ページをカスタムログイン/登録ページにリダイレクトする

私はユーザーシステムを備えたウェブサイトを持っています。 WordPressのユーザーシステムをそのWebサイトに統合したいのですが、それでもWebサイトの登録/ログインページを使用したいと思います。 Wordpressのログインフォームまたは登録フォームを使用して誰もログインまたは登録できないようにしたいと思います。代わりに、Wordpressのログイン/登録ページにアクセスしようとしたときに、それらのページが自分のログイン/登録ページにリダイレクトするようにします。

これを行う方法はありますか? Googleを試しましたが、ユーザーがログインまたは登録した後のリダイレクトしか見つかりませんでした。これは私が望んでいることではありません。

前もって感謝します。

17
Bruno De Barros

このためには、ログイン/登録ページをカスタムページにリダイレクトする必要があります。したがって、このコードは、アクティブ化されたテーマフォルダーの下のfunctions.phpファイルに記述します。カスタムページパスを引数として渡します。

 add_action('init','possibly_redirect');

function possibly_redirect(){
 global $pagenow;
 if( 'wp-login.php' == $pagenow ) {
  wp_redirect('http://google.com/');
  exit();
 }
}
24
nickohrn

POSTまたはGETリクエスト(カスタムajaxログインフォームに便利)なしで、 'wp-login.php'のみに直接アクセスを制限するには、高度な関数を使用します。

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');
17
Anatoly

正しいアクションフックは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を使用できます。つまり、postpasslogoutlostpasswordretrievepasswordresetpassregisterおよびlogin。例:

add_action('login_form_register', function(){
    wp_redirect( site_url('custom-registration/') );
});
3
brasofilo

カスタムログインページを使用しているが、wp_login_form()を使用している場合は、フォームがPOST to wp-login.php)になることに注意してください。したがって、$かどうかを確認する必要があります。リダイレクトする前の_POSTは空です。

function prefix_wp_login_redirect() {
  global $pagenow;  
  if( $pagenow == 'wp-login.php' && empty($_POST)) {
    auth_redirect();
    exit();
  }
}
2
cee.e

login_headフックにラッチして、そこでリダイレクトを発行できる場合があります。

1
ceejayoz