wp_dropdown_aurhors() とユーザーレベルについて
-
投稿画面の作成者メタボックスで使われている wp_dropdown_authors() のパラメータにて
'who' => 'authors'が指定されていますが、これを辿ると、ユーザーレベルが0以外、として絞り込んでいます。このことを知らず新しいロールを
$new_role = add_role( 'new_role', 'New Role' );
と追加した場合、作成者メタボックスにこのロールのユーザーがドロップダウンリストに表示されません。具体的には、明示的にユーザーレベルにあたる権限を
$new_role->add_cap( 'level_n' ); //n>0
で必要数設定しておかないといけません。これを設定しないと、グローバル変数 $user_level が設定されません。で、ソースを遡って行くと、デフォルトのロールでは、インストール時の populate_roles でそれぞれ level_0 から level_10 まで設定されていました。
Codex によるとユーザーレベルの概念は 3.0 で非推奨になり、ユーザーレベルはあくまで後方互換、というような形で紹介されていますが(英語苦手なので勘違いだったらすみません)、wp_dropdown_authors() では今もユーザーレベルの概念に縛られているように感じます。 ざっと見渡した限りでは wp_drowdown_authors() 以外の場所でユーザーレベルをチェックしている部分はほとんどない気がしますので、ここの処理をうまいことしていただけるとありがたいなぁと思います。
level_n という権限が存在すること自体については、シンボリックなあるいはおおざっぱな権限と考えれば覚えやすさもあり納得は出来るので、予めどこかで権限としてそれらが存在するよ、とか、wp_dropdown_authors() で使ってるよ、という形で紹介して頂けると、私のように無駄な時間を費やさずに済んだのかなと思いました…いや、確かに載ってはいるのですが、まさか Codex のユーザーレベルの表の権限が、まさに実際に存在する権限で、最新版でもコアファイル内で使われているとは思いもしませんでした。ちょっとわかりにくかったです。
あるあるですが、原因が分かったあと、英語版フォーラムを検索したら似たような問題が見つかりました。
一方、wp_dropdown_authors() の who 周りの挙動に限って言えば、現状 level_1から選択可能なので、チェックするのは edit_posts でいいとも思います。あ、でも、カスタム投稿タイプで固有の権限を設定している場合もありますね…やっぱり level_n の方が便利かも…。
この辺り皆様はどのようにお考えでしょうか?
トピック「wp_dropdown_aurhors() とユーザーレベルについて」には新たに返信することはできません。