WordPressで記事作成者の権限レベルによって動作を変えるには?

記事中で実行するphpコード(ショートコード)でそのような判別が必要になったので、自分のメモを兼ねて書いておきます。
間違っているかもしれないので参考程度にどうぞ。(WordPress3.0と3.0.4で確認)

// WordPressループによる記事の処理中に・・・
$user = get_userdata( get_the_author_meta('ID') );
$user_level = (int) $user->user_level;
if( $user_level >= 8 ){ //権限レベルの判別
	// この行は記事作成者が管理者権限だと実行される
}

上記のソースでいう$user_levelの値で判別してみました。権限レベルの判別の行の「8」が、管理者権限であることを示しています。
この値は、権限レベルの値です。0は購読者、1は寄稿者(1以下は書き手全員)、2〜4は作成者、5〜7は編集者、8〜10は管理者となります。
各書き手の権限レベルは、管理ページ→ユーザー→プロフィール→権限グループの設定で決まります。
(ちなみに読み手の権限レベルではないので勘違い注意。書き手を判別する話)

しかしここまで書いておいて、この権限レベルって、WordPress3.0から非推奨になったらしい。しばらく使えるとは思うけども。代わりの「ユーザーグループ権限とユーザー権限」ってのがあるようですが利用方法…というか意味がよくわかりません(汗)。ただ拡張された感じにも見えるけどどうなんでしょう。エキスパートな方がいましたらぜひ教えて下さい。
わかったらソース直す予定です。

ちなみに自分がこの判別を利用した例は「WordPressの記事内でPHPを実行するショートコード(プラグインではなく)」にあります。

お付き合いありがとうございました。


2013.2.4. 非推奨のget_the_author_IDをget_the_author_meta(‘ID’)に変えました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


Deprecated: attribute_escape の使用はバージョン 2.8.0 から非推奨になっています ! 代わりに esc_attr() を使ってください。 in /home/ohaya/wave-sight.net/public_html/haya.wave-sight.net/cms-wp/wp-includes/functions.php on line 5213

Deprecated: attribute_escape の使用はバージョン 2.8.0 から非推奨になっています ! 代わりに esc_attr() を使ってください。 in /home/ohaya/wave-sight.net/public_html/haya.wave-sight.net/cms-wp/wp-includes/functions.php on line 5213

Deprecated: attribute_escape の使用はバージョン 2.8.0 から非推奨になっています ! 代わりに esc_attr() を使ってください。 in /home/ohaya/wave-sight.net/public_html/haya.wave-sight.net/cms-wp/wp-includes/functions.php on line 5213