WordPress:ユーザー権限や情報によって条件分岐を行う方法

WordPress:ユーザー権限や情報によって条件分岐を行う方法

備忘録。
このブログでもいろいろと紹介しているWordPressの管理画面カスタマイズですが、そのまま使用すると全てのユーザーに対して適用されます。
それを条件分岐を使用して特定のユーザーのみに適用させたりする方法です。

例えば「WordPressの管理画面をカスタマイズする時に使えるハック Part 2」で紹介している不要な投稿画面内のボックスやサイドメニューを非表示にするカスタマイズを行う場合、そのままここで紹介しているコードを使用すると全てのユーザーに対して適用されますが、これを特定のユーザーには適用させたくない形で実装したい時などに使える方法です。

「特定の権限以外のユーザー」 に適用する

特定の権限以外のユーザーに適用させたいという場合はcurrent_user_can()を使って実装ができます。
例えば「管理者」以外の権限に対して何か行いたいという場合はfunctions.phpへ下記のように記述します。

functions.php

if ( !current_user_can( 'administrator' ) ) {
  // ここに処理
}

上記は権限が「管理者」の場合ですが、その他の権限にしたい場合はadministratorの部分を任意のものに変更することで実装できます。

「特定のID以外のユーザー」 に適用する

開発者以外には見せたくない・触ってほしくない部分がある場合、単純に他のユーザーには「管理者」以外の権限を与えて先ほどのcurrent_user_can()を使用すればいいのですが、何らかの理由でどうしても他のユーザーも「管理者」として登録する必要が出てきた場合は、current_user_can()を使用して権限に条件分岐を行うことはできなくなります。
このような場合は、get_currentuserinfo()を使用して、特定のID以外のユーザー以外に対して適用するという形で記述すれば実装することができます。

functions.php

global $current_user;
get_currentuserinfo();
if ( $current_user->ID != '1' ) {
  // ここに処理
}

上記はユーザーIDが「1」以外のユーザーに対して何かを行うという記述になり、例えば開発者が「1」のユーザーIDを持っている場合、上記のように書くことでたとえ他のユーザーが「管理者」の権限を持っていても、開発者とそうでない者とで違う処理を実装することができます。
指定するユーザーIDの変更はハイライト表示している1の部分を任意のものに変更します。


上記で使用したcurrent_user_can()get_currentuserinfo()、ユーザー権限などについての詳細は以下で確認できます。

Close the search window,
please press close button or esc key.