ワードプレスに「会員登録機能を付けたい・・・!」と思ったときには、プラグインを使う方法が思いつくかと思いますが、そもそもどうやって作るのか…?と思ったので、実際に試してみることにしました。
■ご参考にさせていただきました。ありがとうございます。
WordPressで会員登録フォームとログインフォームを自作してみる【プラグインなし】
WordPressにログインフォームを独自に実装する
新規会員登録フォーム作成
このあたりは、過去にも同じような内容を書いたので省略しますが、「パスワードを忘れた方は」を作りたい場合に、下記のような1行を追加してみます。
パスワードを忘れた方は<a href="/wp-login.php?action=lostpassword">こちら</a>
ただこのままだとワードプレスの「ユーザー名、またはメールアドレスを入力してください。パスワードのリセット手順が記されたメールが送信されます。」のページに移動するので、このあたりの処理も、おいおい追加してみたいと思います。
functions.php ログイン
/*** ログインに関する処理を実行する ***/
//アクションフックを追加
add_action( 'template_redirect', 'login_init' );
//関数を実行
function login_init() {
//ログインページでなければ実行しない
if ( ! is_page( 'login' ) ) {
return;
}
//変数を準備
global $email, $error;
$email = "";
$error = "";
//HTML入力フォームの値を受信
if ( isset( $_POST['login_nonce'] ) ) {
//nonce用ハッシュ値を検証します
if ( ! wp_verify_nonce( $_POST['login_nonce'], 'login') ) {
$error .= '不正な遷移です';
} else {
if ( ! empty( $_POST['user_email'] ) ) {
$email = $_POST['user_email'];
} else {
$error .= "メールアドレスを入力してください";
}
if ( ! empty( $_POST['user_pass'] ) ) {
$password = $_POST['user_pass'];
} else {
//パスワードが空白であれば
$error .= "パスワードを入力してください";
}
}
if ( ! $error ) {
//ユーザー取得
$user = get_user_by( 'email', $email );
if ( false === $user ) {
$error .= "メールアドレスが間違っています。";
} else {
//ログイン実行
$creds = array();
$creds['user_login'] = $user->data->user_login;
$creds['user_password'] = $password;
$creds['remember'] = true;
$user = wp_signon( $creds, false );
if ( is_wp_error( $user ) ) {
if ( array_key_exists( 'incorrect_password', $user->errors ) ) {
$error .= "パスワードが間違っています。";
} else {
$error .= "ログインに失敗しました。";
}
} else {
//ログイン成功→リダイレクト
wp_safe_redirect( '/login-success/');
}
}
}
}
}
前は、ログイン成功したタイミングでthe_parmalink()としていましたが、別のページに遷移した方が良さそうでしたので、少し修正をしてみます。
wp_safe_redirect( the_parmalink() );
「ログイン成功ページ」に移動するように変更。
//ログイン成功→リダイレクト
wp_safe_redirect( '/login-success/');
動きました!!
気になった点・メモ
ログインを押したあと、30秒ほど?is_user_logged_in()に入らない・・・?時間があるような感じがします。・・・なぜか。
ログインはできているような感じなのですが、どこかがおかしい・・・
間になにかの処理が必要なのでしょうか…?
んー…。(^_^;) また何か分かったら、追記したいと思います。
ちょっとまだ分からない点が多いです・・・!すみません!
大丈夫です!私も覚えます!!
まとめ
ワードプレスは覚えれば覚えるほど楽しくなりますので、ぜひ挑戦してみることがオススメです!
「あなたのスキルアップを、形に。」
▶参考