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:
/* その他ユーザの処理 */
}
あらかじめアカウント名を知っている(もしくは固定する)という前提になるが、権限ではなくアカウント名なので詳細に分岐できるかと思う。
用途としては、特定のユーザだけブロックしたり、特定のユーザだけ特別ページに誘導できる。
会員制サイトなどに利用してみてはいかがだろうか。
