サポート » 使い方全般 » wp_dropdown_aurhors() とユーザーレベルについて

  • mizube

    (@mizube)


    投稿画面の作成者メタボックスで使われている 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 の方が便利かも…。

    この辺り皆様はどのようにお考えでしょうか?

1件の返信を表示中 - 1 - 1件目 (全1件中)
  • Fumito MIZUNO

    (@php-web)

    「カスタム投稿タイプで、投稿タイプ毎に権限を割り振る」というケースを考えると、詳細に権限を割り振りたい場合にユーザーレベルだとカバーしきれないかな、と思います。
    「そのカスタム投稿の権限があるユーザーだけが選択候補に出てくる」のほうが良さそうなので。

    非推奨となっているユーザーレベルが残っている理由は私も把握していないですが、
    非推奨としたのなら使わなくするのが好ましいと思います。
    なので該当部分のコードの書き換えが良いと思います。

    権限の簡易設定としてユーザーレベルを残すのも有力ですが、いまさらユーザーレベル使います、もちょっとしにくいだろう、と思います。(ユーザーレベルを残す案を出すなら、WP3.0がリリースされる頃に提案するのが好ましい)

1件の返信を表示中 - 1 - 1件目 (全1件中)
  • トピック「wp_dropdown_aurhors() とユーザーレベルについて」には新たに返信することはできません。