WordPressで自動ログインする方法
WordPressでパスワードなしでログインさせる方法を紹介します。
ユーザー名だけでログインすることが可能になります。
コードは以下の形です。
$user = get_user_by( 'login', 'user_login' );wp_clear_auth_cookie();wp_set_current_user( $user->ID );wp_set_auth_cookie( $user->ID );
各処理は以下の通り。
- ユーザーの取得(例ではユーザー名で取得)
- 認証クッキーの消去
- 現在のユーザー情報を設定
- 認証クッキーをセット
のようになっています。
ユーザーの取得の際に使用した「get_user_by」の第一引数は「id | ID | slug | email | login」から選ぶことができます。この辺りは実装する際に取得できるものと併せればいいと思います。
ユーザーのクッキーセットの際に引数を指定することで自動ログインの設定も可能です。上の例では引数がないためクッキーの有効期限はSessionになります。
使い方はそれぞれだと思いますが、セキュリティには十分配慮する必要があると思います。
自動的にログインするということは「read」の権限さえ持っていればURLを直接入力して管理画面にログインできてしまうということです。
管理画面を表示させたくなければ「read」を外してあげればOKです。反対に管理画面を表示させたい場合は権限などで細かく制御した方がいいでしょう。