「Notice: has_cap の使用は…」はプラグインを確認する

WordPressのロゴ。

WordPress で 「PHP Notice: has_cap がバージョン 2.0 から<strong>非推奨</strong>になった引数付きで呼び出されました。 プラグインやテーマでのユーザーレベルの使用は推奨されていません。代わりに権限グループと権限を使ってください。 in /home/xjine/xn--lcki7of.jp/public_html/wp-includes/functions.php」 が表示されるとき、プラグインやテーマに問題がある可能性があります。

端的に言えば、数値を使って権限レベルを設定せず、権限名を使って権限レベルを設定するように、通知されています。詳細は後述します。

調査する限り、この問題の多くは、add_options_page 関数によって引き起こされているようです。私の場合も自作のプラグインがこれに該当しました。

問題の原因と解決

エラーコードに出力されている has_cap 関数は、ユーザの権限を確認するための関数です。WordPress では administrator(管理者) や、subscriber(購読者) などがあります。 cap は Capability を意味します。

add_options_page 関数は、プラグインやテーマ専用の設定ページを追加するための関数です。 この中に「どの権限のユーザに対し、追加する設定ページを表示するか」を設定するための引数があります。 add_options_page 関数の 3 つ目の引数です。

正常に動作するものの、add_options_page の 3 つ目の引数に、ユーザ権限を設定するための数値を入力することは非推奨です。 この数値は、以前はユーザーレベル、権限レベルなどと呼ばれていましたが、現在は使われていません。

例えば、管理者は権限レベル 8 です。add_options_page 関数を使う際、add_options_page(*,*,8…) などとすると、 追加される設定ページは、管理者にのみ表示されるようになります。しかしながらこの方法では、正常に動作するものの、ここで紹介するエラーが通知されます。

現在の WordPress の仕様では、add_options_page(*,*,'administrator'…) と使うようにされています。 設定できる権限には他に、editor, author, contributor, subscriber などがあります。