T-CREATOR

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

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

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

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

WordPressのfunctions.phpに記述する

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

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

functions.phpif (!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.phpif (!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.phpif (!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()へリダイレクト
ini//カンマ区切りで $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());
}

以上になります。

記事Article

もっと見る