web-dev-qa-db-ja.com

\ WP_Userオブジェクト| {caps}と{allcaps}の違いは何ですか?

\WP_Userオブジェクトをダンプすると、2つのプロパティがあることに気付きました。これらのプロパティは、特定のユーザーの機能に直接関連しています。

  1. $user_object->caps
  2. $user_object->allcaps

$user_object->capsの配列値が$user_object->allcapsの配列値より少ないことにすぐ気付きました。おそらくここでの命名規則です。

私は現在$user_object->capsの下の1つの値だけを観察します。このユーザーにはカスタムロールも割り当てられています。 $user_object->capsの1つの値は、偶然私のカスタムユーザロールの名前です。ただし、それとまったく同じ値が$user_object->allcapsにもリストされています。

  1. 2つのプロパティ$user_object->caps$user_object->allcapsの違いは何ですか?
  2. $user_object->capsWOULDN'Tにリストされている機能が$user_object->allcapsの下に見つかるような状況はありますか?
  3. $user_object->capsを使用する必要があると思われる理由はありますか、それとも特定のユーザーの$user_object->allcapsの確認に頼ることができますか
2
Michael Ecklund

WP_Userクラス のプロパティに対するコメントを調べると、allcapsは次のようになります。

個人ベースおよびロールベースを含む、ユーザーが持っているすべての機能。

そしてcapsは:

ユーザーに付与されている個々の機能。

しかし、あなたはおそらく直接プロパティを使うべきではありません。 WP_Userには has_cap メソッドがあります。これは適切なプロパティをチェックし、関連するフィルタを通して結果を実行するためです。

4
Jacob Peattie