WordPressのログイン・ログアウトを自作する
所沢市でWebサイト制作などを行っているRishunTradingです。
今回は、Wordpressのログイン・ログアウトを自作する方法を掲載します。前回ブログに記載させて頂きました「ログイン失敗時の処理を変更」と合わせてみて頂くとわかりますが、これらを使いこなせると、Wordpressのユーザー権限を流用した会員制サイトの作成なども可能となります。
1.Wordpressのログイン処理の仕組み
触ったことのある人はわかるかと思いますが、Wordpressのログイン処理は、「wp-login.php」が行っています。
ユーザー名の入力フォームには、name=’log’が使われ、パスワードの入力フォームには、name=’pwd’が使われております。
「ログイン」が押下されると、POSTリクエストでログインが実行される仕組みです。
また、Wordpressでは、ログイン処理を行うURLを取得するための以下の関数が準備されております。
wp_login_url($redirect);
この関数は、サイト構成やパーマリンク設定に基づいてログインページのURLを動的に生成してくれます。
また、引数にはログイン成功後のリダイレクト先が指定できます。
この仕組みが理解できれば、簡単に自作ができます。
2.ログイン処理
以下は、ログイン処理を実行するログインページのサンプルコードです。
■ログインページのサンプルコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | <?php if (!is_user_logged_in()): ?> <form method="post" action="<?php echo wp_login_url(home_url('/login/')); ?>"> <?php if(!empty($_GET)){ $login = isset($_GET['login']) ? $_GET['login'] : ''; if(!empty($login)){ ?> <div class="errmsg"> <p>ログインに失敗しました。もう一度入力してください。</p> </div> <?php } } ?> <div class="login-field"> <label for="log">アカウント</label> <input type="text" name="log" id="log"> </div> <div class="login-field"> <label for="pwd">パスワード</label> <input type="password" name="pwd" id="pwd"> </div> <div class="submit-btn"> <a href="<?php echo home_url(); ?>">戻る</a> <button type="submit">ログイン</button> </div> </form> <?php endif; ?> |
なお、is_user_logged_in()は、ログインしているかどうかを確認する関数となります。
3.ログイン失敗時の処理
前回ブログに記載させて頂きました「ログイン失敗時の処理を変更」に記載したサンプルコードも一応記載しておきます。
■functions.phpなどに追加するログイン失敗処理のサンプルコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | add_action('wp_login_failed', 'set_org_login_fail'); // hook failed login function set_org_login_fail( $username ) { $referrer = $_SERVER['HTTP_REFERER']; //直前のページのURLを取得 if ( !empty($referrer) && !strstr($referrer,'wp-login') && !strstr($referrer,'wp-admin') ) { //Wordpressのデフォルトログイン画面でない。 if(isset($_GET['login'])){ $login_status = $_GET['login']; } if($login_status == 'failed'){ //既にログイン失敗している $redirect_url = home_url(); } else{ $redirect_url = home_url(). '?login=failed'; //ログイン失敗時にパラメータ付与 } wp_redirect( $redirect_url ); exit; } } |
4.ログアウト処理
ログアウト処理は、以下のURLにアクセスするだけでログアウト処理が実行できます。
「wp-login.php?action=logout」
また、ログインと同様にログアウト用のURLを取得するための以下の関数が準備されております。
wp_logout_url($redirect);
ログアウトボタン等のリンク先に上記関数を実施するだけです。
1 | <a href="<?php echo wp_logout_url(); ?>">ログアウト</a> |
以上、皆さまのお役に立てれば幸いです。
WEB DESIGN全てお任せ!ホームページ制作
RishunTradingでは、日本にはないコンセプトや高いデザイン性をもったヨーロッパ製品の輸入販売、及び、Webサイト制作事業などをおこなっております。
「全てお任せ!ホームページ制作」は、ドメイン取得からサーバー設定、レスポンシブルデザイン(スマホ、タブレット対応)、SEO対策がすべて含まれたお得なホームページを制作するサービス商品です。
運用開始後に「Webサイト運用管理サービス(保守)」と組み合わせて購入しますと、メンテナンス、更新も含めてすべて弊社で実施しますので、お客様は安心して本業に集中する事ができます。
しかもなんと、「全てお任せ!ホームページ制作」は、¥100,000!で提供しております。
本業が忙しい中小企業様に大変ご好評を頂いている商品です。
独自ドメイン取得
サーバー開設&設定
レイアウト設計
レスポンシブルデザイン
(*1)検索エンジン最適化
(SEO対策)場所Maps
お問い合わせフォーム
SSL化
各種SNS連携
運用マニュアル