それで、私はログインフォームとユーザー登録のためのものを含むカスタムページを作っているプラグインに取り組んでいます。私はフォームを構築して運用しています。以下が私のコードです。
<!-- Begin login form -->
<form name="loginform" id="login_form" class="login_form" action="<?php echo esc_url( wp_login_url() ); ?>" method="post">
<p>
<input type="text" name="log" id="user_login" class="input" placeholder="Username" />
</p>
<p>
<input type="password" name="pwd" id="user_pass" class="input" placeholder="Password" />
</p>
<button name="wp-submit" id="wp-submit" class="btn"><?php _e("Sign in", "shorti"); ?></button>
<input type="hidden" name="redirect_to" value="<?php echo $_SERVER["REQUEST_URI"]; ?>" />
</form>
<!-- end login form -->
<!-- Begin registration form -->
<form method="post" id="register_form" class="wp-user-form" action="<?php echo site_url('wp-login.php?action=register', 'login_post') ?>">
<p><!-- Username -->
<input type="text" name="user_login" id="user_login" class="input" placeholder="username" />
</p>
<p><!-- Email to send p/w to -->
<input type="email" name="user_email" id="user_email" class="input" placeholder="email address" />
</p>
<p class="small-text">You will receive an email with a generated password<br />(which you can change in your "user settings")</p>
<?php do_action('register_form'); ?>
<button name="wp-submit" id="wp-submit" class="btn"><?php _e("Register!", "shorti"); ?></button>
<?php $register = $_GET['register']; if($register == true) { echo '<p>Check your email for the password!</p>'; } ?>
<input type="hidden" name="redirect_to" value="<?php echo $_SERVER['REQUEST_URI']; ?>?register=true" />
<input type="hidden" name="user-cookie" value="1" />
</form><!-- end registration-form -->
これはエラーメッセージがあるときはいつでもユーザーをwp-login.phpにリダイレクトするという事実に加えてうまく働きます。私はAJAXのすべてのエラーを処理するためのフォームのページが必要です。より良いユーザーエクスペリエンスを提供するために。これを実行するための最良の方法は何ですか?
開始フォーム要素を見てください。 actionの値によって、フォームデータの送信先が決まります。値を変更することで、他のページではなくフォームに自分自身にリダイレクトするように指示できます。
コーデックスは、必要なフォームのマークアップを生成するための代替アプローチを提供します。
http://codex.wordpress.org/Customizing_the_Login_Form#Make_a_Custom_Login_Page
これはもっと詳細なチュートリアルです。
http://digwp.com/2010/12/login-register-password-code/ /
既存の人気のあるAjaxベースのログインプラグインをいつでも使用またはフォークできます。
これが私のやり方です。ログインフォームを使用してログインを作成します https://codex.wordpress.org/Function_Reference/wp_login_form
以下はログインログアウトリダイレクトとログインエラー処理です。これはログインの問題を解決するのに役立ちます。
/** Login Redirect
* Redirect user after successful login.
*
* @param string $redirect_to URL to redirect to.
* @param string $request URL the user is coming from.
* @param object $user Logged user's data.
* @return string
*/
function my_login_redirect( $redirect_to, $request, $user ) {
//is there a user to check?
global $user;
if ( isset( $user->roles ) && is_array( $user->roles ) ) {
//check for admins
if ( in_array( 'administrator', $user->roles ) ) {
// redirect them to the default place
return home_url('/wp-admin/');
} else {
return home_url();
}
} else {
return $redirect_to;
}
}
/*Login Error Handle*/
add_action( 'wp_login_failed', 'aa_login_failed' ); // hook failed login
function aa_login_failed( $user ) {
// check what page the login attempt is coming from
$referrer = $_SERVER['HTTP_REFERER'];
// check that were not on the default login page
if ( !empty($referrer) && !strstr($referrer,'wp-login') && !strstr($referrer,'wp-admin') && $user!=null ) {
// make sure we don't already have a failed login attempt
if ( !strstr($referrer, '?login=failed' )) {
// Redirect to the login page and append a querystring of login failed
wp_redirect( $referrer . '?login=failed');
} else {
wp_redirect( $referrer );
}
exit;
}
}
/*Login Empty Fields Error handling*/
add_action( 'authenticate', 'pu_blank_login');
function pu_blank_login( $user ){
// check what page the login attempt is coming from
$referrer = $_SERVER['HTTP_REFERER'];
$error = false;
if($_POST['log'] == '' || $_POST['pwd'] == '')
{
$error = true;
}
// check that were not on the default login page
if ( !empty($referrer) && !strstr($referrer,'wp-login') && !strstr($referrer,'wp-admin') && $error ) {
// make sure we don't already have a failed login attempt
if ( !strstr($referrer, '?login=failed') ) {
// Redirect to the login page and append a querystring of login failed
wp_redirect( $referrer . '?login=failed' );
} else {
wp_redirect( $referrer );
}
exit;
}
}
/*Logout Redirect*/
add_filter( 'login_redirect', 'my_login_redirect', 10, 3 );
function go_home(){
wp_redirect( home_url('/login/') );
exit();
}
add_action('wp_logout','go_home');