「WordPress」ログインしていないユーザへのリダイレクトや自動ログインなど処理いろいろ

PHP
「WordPress」ログインしていないユーザへのリダイレクトや自動ログインなど処理いろいろ
Memo
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

「WordPress」ログインしていないユーザへのリダイレクトや自動ログインなど処理いろいろをメモしました。

会員制サイトを作成するときに使用しました。 特定のユーザーのみ閲覧を許可するページや公開前のテストページなどに使えると思います。

WordPressのfunctions.phpに記述する

ログインしていなかったら任意のページにリダイレクト

$ulへリダイレクトさせるURLを設定します。

functions.php
if (!is_user_logged_in()) { //この場合 http://t-cr.jp へリダイレクトします。 $url = 'http://t-cr.jp'; wp_redirect($url); exit; }

ログインしていなかったらログインページヘリダイレクト

  • wp_login_url()でログインページのURLを取得
  • home_url().$_SERVER['REQUEST_URI']現在のページと比較
  • wp_redirect($url);でログインページへリダイレクト
functions.php
if (!is_user_logged_in()) { $url = wp_login_url(); if($url !== home_url().$_SERVER['REQUEST_URI']){ wp_redirect($url); exit; } }

ログインしていなかったら自動でログイン

  • wp_loginでユーザー名とパスワードを渡しログイン
  • wp_setcookieでユーザー名とパスワードを渡しcookieを保存
  • wp_set_current_userで新しい現在のユーザーとして設定
functions.php
if (!is_user_logged_in()) { // $user_name にログインさせるユーザー名を入れます。 $user_name = 'user'; $user = new WP_User(0, $user_name); $user_pass = md5($user->user_pass); wp_login($user_name, $user_pass, true); wp_setcookie($user_name, $user_pass, true); wp_set_current_user($user->ID, $user_name); //wp_redirect関数にログイン後のページを入力します。例はダッシュボード wp_redirect(admin_url()); exit; }

特定のIPアドレス以外からのログインページヘアクセスはトップへリダイレクト

  • $ip_listへカンマ区切りでIP指定
  • $wp_login_urlだった場合取得したIPと比較し結果を$redirectへ保存
  • $redirectがtrueだった場合 home_url()へリダイレクト
//カンマ区切りで $ip_listにIPアドレスを入力します。
$ip_list = '192.000.00.00,192.000.00.00';
$ip_lists = explode(',', $ip_list);
$user_ip = $_SERVER['REMOTE_ADDR'];
$redirect = true;
$url = wp_login_url();
if($url === home_url().$_SERVER['REQUEST_URI']){
    foreach ($ip_lists as $ip) {
        if($user_ip === $ip) {
            $redirect = false;
            continue;
        }
    }
}
if($redirect){
    wp_redirect(home_url());
}

以上になります。

終わりに

最後までご覧いただきありがとうございます。
この記事では「WordPress」ログインしていないユーザへのリダイレクトや自動ログインなど処理いろいろについて紹介させていただきました。

これからも皆様の開発に役立つ情報を提供していきたいと考えています。
今後ともよろしくお願いいたします。