私はいくつかのカスタムログイン/登録テンプレートページを作成しました、そして今私はwp-login.phpへのすべてのリクエストがカスタムURLにリダイレクトされることを望みます。今私はこのようなものがあります:
add_action('init','possibly_redirect');
function possibly_redirect(){
global $pagenow;
if( '/wp-login.php' == $pagenow ) {
wp_redirect('/login');
exit();
}
}
しかし、私が(メタウィジェットの中で)ログアウトリンクをクリックするとき、それは私を/ loginリンクにリダイレクトして、ログアウトをしないので、それは正しく機能しません。あなたは安全な、またはより良い方法でこれをするための他の方法がありますか?ありがとうございました。
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');
実際に私はこれを行うための正しい方法を見つけました。
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にリダイレクトされます。
exit()
を省略して、Johnの答えをお勧めします。したがって、私の場合は完全に機能するコードは次のとおりです。
function redirect_login() {
wp_redirect( home_url( '/login' ) );
}
add_action( 'login_form_login', 'redirect_login' );
exit()
がユーザーのログインを不可能にしているようです。
wp_redirect()
...のWP関数リファレンスから注目すべき2つのこと.
exit;
は実際に使用法の一部です。$location
パラメータは、 "Absolute URI"、プロトコルを含むもの(http://
)です。絶対/完全URIの例:http://www.example.com/blog/images/icecream.jpg