web-dev-qa-db-ja.com

すべてのリクエストをwp-login.phpにリダイレクトするにはどうすればいいですか?

私はいくつかのカスタムログイン/登録テンプレートページを作成しました、そして今私はwp-login.phpへのすべてのリクエストがカスタムURLにリダイレクトされることを望みます。今私はこのようなものがあります:

add_action('init','possibly_redirect');
 function possibly_redirect(){
global $pagenow;
if( '/wp-login.php' == $pagenow ) {
wp_redirect('/login');
exit();
}
}

しかし、私が(メタウィジェットの中で)ログアウトリンクをクリックするとき、それは私を/ loginリンクにリダイレクトして、ログアウトをしないので、それは正しく機能しません。あなたは安全な、またはより良い方法でこれをするための他の方法がありますか?ありがとうございました。

2
John Smith

POSTやGETリクエスト(カスタムのAjaxログインフォームに便利)なしで、 'wp-login.php'だけに直接アクセスを制限するために、私はadvanced関数を使います:

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

実際に私はこれを行うための正しい方法を見つけました。

WordpressのログインをカスタムURLにリダイレクトするには:

function redirect_login()
{
wp_redirect( home_url( '/login' ) );
exit(); 
}
add_action( 'login_form_login', 'redirect_login' );

Wordpressの登録をカスタムURLにリダイレクトするには:

 function redirect_register()
{
wp_redirect( home_url( '/registration' ) );
exit(); 
}
add_action( 'login_form_register', 'redirect_register' );

私はコードが理解するのが非常に簡単であると思います、基本的にあなたはログインのためのフックを加えて、URLを登録して、そして次にカスタムURLにリダイレクトするためにwp-redirectを使います。 wp-login.phpおよびwp-login.php?action = registerに対するすべてのリクエストは、設定したカスタムURLにリダイレクトされます。

3
John Smith

exit()を省略して、Johnの答えをお勧めします。したがって、私の場合は完全に機能するコードは次のとおりです。

function redirect_login() {
    wp_redirect( home_url( '/login' ) ); 
}
add_action( 'login_form_login', 'redirect_login' );

exit()がユーザーのログインを不可能にしているようです。

1
Milan

wp_redirect()...のWP関数リファレンスから注目すべき2つのこと.

  1. exit;は実際に使用法の一部です。
  2. $locationパラメータは、 "Absolute URI"、プロトコルを含むもの(http://)です。絶対/完全URIの例:http://www.example.com/blog/images/icecream.jpg
0
D. Abel