WordPressのユーザ毎に表示を切り分ける

WordPressのユーザごとに表示を切り分ける方法を書いている。

(1) ログインユーザの権限ごとに切り分ける方法

こちらの方法ならば比較的簡単かと思われる。

if(is_user_logged_in()){ // ログインしていれば
  global $current_user;
  get_currentuserinfo();
  // 権限のデータがあれば
  if(isset($current_user->roles) && isset($current_user->roles[0])){
    $user_level = $current_user->roles[0];
  }
}else{ // ログインしていなければ
  $user_level = 'guest';
}
// 処理
switch($user_level){
  case 'administrator':
   /* ここに管理者ユーザがアクセスした時の処理をいれる */
    break;
  case 'subscriber':
   /* ここに購読者ユーザがアクセスした時の処理をいれる */
    break;
  case 'guest':
    /* ここにログインしてないユーザの処理をいれる */
    break;
  default:
    /* その他ユーザの処理 */
}

$current_userからユーザのデータを取得している。
WordPressの権限は、administrator(管理者)、editor(編集者)、author(投稿者)、contributor(寄稿者)、subscriber(購読者)などがある。

使用方法としては、ユーザ権限によって画像やcssを変えたり、管理者ユーザだけアクセス解析を使用しない、といったものがあるだろう。

(2) アカウント名(ログイン名)を指定して切り分ける方法

上の応用みたいな方法です。

if(is_user_logged_in()){ // ログインしていれば
  global $current_user;
  get_currentuserinfo();
  // データがあれば
  if(isset($current_user->data) && isset($current_user->data->user_login)){
    $user_login = $current_user->data->user_login;
  }
}else{ // ログインしていなければ
  $user_login = 'guest';
}
// 処理
switch($user_login){
  case 'olivesystem':
   /* ここにolivesystemがアクセスした時の処理をいれる */
    break;
  case 'hogehoge':
   /* ここにhogehogeがアクセスした時の処理をいれる */
    break;
  case 'guest':
    /* ここにログインしてないユーザの処理をいれる */
    break;
  default:
    /* その他ユーザの処理 */
}

あらかじめアカウント名を知っている(もしくは固定する)という前提になるが、権限ではなくアカウント名なので詳細に分岐できるかと思う。

用途としては、特定のユーザだけブロックしたり、特定のユーザだけ特別ページに誘導できる。
会員制サイトなどに利用してみてはいかがだろうか。

WordPressの独自プラグイン開発、既存WordPressの不具合の対処します

OLIVESYSTEMでは、WordPressの独自プラグイン開発やテーマ改造、既存WordPressの不具合(エラー、バグ)の対処をしております。

WordPressで困ったこと、「こういう機能をつけたい」という想いに対応しています。

お気軽にお問い合わせください。

困り事、相談はこちら    プラグイン開発はこちら

シェアする

  • このエントリーをはてなブックマークに追加

フォローする