それが使用するのが良い習慣であるかどうか知りたいです:
if ( current_user_can( 'edit_user', $user_id ) ) {
// do something
}
wordpressのドキュメントでは、この機能を見ていなかったので
はい、コードに関連することをする前に、ユーザーが何かをすることができるかどうかをチェックするのは良い習慣です。
たとえば、ユーザーに必要な機能がない場合はカスタム投稿タイプを保存しないでください。あるいはmanage_options
機能を持たないユーザーに特定のものを表示しないでください(通常はスーパー管理者および管理者)。
この場合の悪い習慣は、ユーザーがこれらのことをするのに必要な役割を持っていると仮定し、とにかくそれらをすることです。多くの場所(管理者メニューの登録など)では、チェックはWP Core自体によって行われますが、これはあなたがコードをどこでもcurrent_user_can
のチェックで満たすべきであることを意味しません。
現在行われているユーザーの能力を、問題のユーザーに対してチェックし、ブール値を返すだけです。私はあなたがやろうとしていることのより完全な全体像なしに「良い習慣」がこのシナリオに適用できるとは思わない。 (ブール値が真の場合、どのようなコードが実行されますか?)
そうは言っても、このチェックを単純に使用しても問題ないと思いますし、それは確かに「悪い習慣」ではありません。だから、それのために行きなさい。
current_user_can( 'edit_user', $user_id )
この用語は"メタ機能"edit_user
のチェックを実行します。デフォルトでは、機能edit_users
にマッピングされています。これは、adminロールの一般的な機能です。さらに、現在のユーザーのIDとパラメータとして指定されたユーザーIDを比較します。これらが一致すると、ステートメントはTRUE
になります。これは、各ユーザーが自分のプロファイルを編集する可能性があるためです。
これらの評価はmap_meta_cap
フィルタの影響を受ける可能性があります。それによって、プラグインはすべてのユーザーのサブセットに対してユーザー(またはユーザーのグループ)に特権を付与することができます。 「モデレータ」の役割などを考えています。
現在のユーザーがこのユーザーデータを編集する権限を持っている場合は、コードがユーザー関連の設定やユーザーデータを変更するたびにこのチェックを実行する必要があります。