私はユーザーシステムを備えたウェブサイトを持っています。 WordPressのユーザーシステムをそのWebサイトに統合したいのですが、それでもWebサイトの登録/ログインページを使用したいと思います。 Wordpressのログインフォームまたは登録フォームを使用して誰もログインまたは登録できないようにしたいと思います。代わりに、Wordpressのログイン/登録ページにアクセスしようとしたときに、それらのページが自分のログイン/登録ページにリダイレクトするようにします。
これを行う方法はありますか? Googleを試しましたが、ユーザーがログインまたは登録した後のリダイレクトしか見つかりませんでした。これは私が望んでいることではありません。
前もって感謝します。
このためには、ログイン/登録ページをカスタムページにリダイレクトする必要があります。したがって、このコードは、アクティブ化されたテーマフォルダーの下のfunctions.php
ファイルに記述します。カスタムページパスを引数として渡します。
add_action('init','possibly_redirect');
function possibly_redirect(){
global $pagenow;
if( 'wp-login.php' == $pagenow ) {
wp_redirect('http://google.com/');
exit();
}
}
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');
正しいアクションフックは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
、resetpass
、register
およびlogin
。例:
add_action('login_form_register', function(){
wp_redirect( site_url('custom-registration/') );
});
カスタムログインページを使用しているが、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();
}
}
login_head
フックにラッチして、そこでリダイレクトを発行できる場合があります。