WordPressでユーザがログイン中かどうか判定して表示内容を変える方法

WordPressでブログを見ているのが自分(管理者)の場合だけ表示させたい項目があったので、方法を調べてみました。

例えばこのブログですが、とりあえず僕しか記事を書く人がいないので、WordPressのインストール時に作成した管理者ユーザのみで運用しています。具体例としてはこのブログにはGoogle Adsenseを貼っていたりするので、自己クリックをしないように「自分が見ている時だけはダミーのDIVを表示させておく」などができないかな、ということですね。

他にも、自分だけが見れればいいアクセス解析とか、リンク集などを表示させたりできれば管理上便利になるかなと思いまして。

 

is_user_logged_in() を使う

is_user_logged_in()というWordPress関数が見つかりました。現在の訪問者がログインしているかチェックし、ログインしていればtrue、していなければfalseを返すものです。

 

とりあえず、ユーザが1人しかいないので僕の場合これで充分ですね。

if (is_user_logged_in()) {
  // ログインしている
} else {
  // ログインしていない
}

こんな感じで組み込めばログイン有無で表示を変更させることができました。

 

get_currentuserinfo() を使う

ブログを複数ユーザで運用している場合はユーザのレベルによって切り替える必要がありそうです。そのユーザの権限グループによって表示させる内容を変更させたい場合は、以下のようにget_currentuserinfo()で現在のユーザ情報を取得後、user_levelの値によって処理を分岐させればよいです。

global $current_user;
get_currentuserinfo();
if ($current_user->ID == '') {
  // ログインしていない
} else if ($current_user->user_level == 10) {
  // 管理者(administrator)としてログインしている
} else if ($current_user->user_level >= 7) {
  // 編集者(editor)としてログインしている
} else if ($current_user->user_level >= 4) {
  // 作成者(author)としてログインしている
} else if ($current_user->user_level >= 1) {
  // 投稿者(contributor)としてログインしている
} else {
  // 購読者(subscriber)としてログインしている
}

 

【参考URL】