web-dev-qa-db-fra.com

utilisateur actuel peut modifier l'utilisateur?

Je veux savoir si c'est une bonne pratique d'utiliser:

if ( current_user_can( 'edit_user', $user_id ) ) {
    // do something
}

parce que dans la documentation Wordpress un n'a pas vu cette capacité

1
user1147145

Oui, il peut être judicieux de vérifier si un utilisateur est capable de faire quelque chose avant de faire quelque chose lié au code.

Par exemple, n'enregistrez pas un type de publication personnalisé si l'utilisateur ne dispose pas des fonctionnalités nécessaires pour le faire, ou n'indiquez pas certaines choses aux utilisateurs ne disposant pas de la fonctionnalité manage_options (les super-administrateurs et les administrateurs normalement).

Une mauvaise pratique dans ce cas serait de supposer que l'utilisateur a le rôle nécessaire pour faire ces choses et les faire quand même. Cela ne signifie pas que vous devez remplir votre code avec des vérifications pour current_user_can partout, bien que, dans de nombreux endroits (tels que l'enregistrement de menus d'administration), la vérification soit effectuée par WP Core lui-même.

3
Tom J Nowell

Il ne fait que vérifier les capacités de l'utilisateur actuel par rapport à l'utilisateur en question et renvoyer une valeur booléenne. Je ne pense pas que les "bonnes pratiques" puissent être appliquées à ce scénario sans une image plus complète de ce que vous essayez de faire. (quel code sera exécuté si le bool est vrai?)

Cela étant dit, je ne vois aucun problème à utiliser simplement ce chèque, et ce n'est certainement pas une "mauvaise pratique". Alors, allez-y.

0
SkyShab
current_user_can( 'edit_user', $user_id )

Ce terme vérifie la "méta capacité" edit_user. Par défaut, il correspond à la fonctionnalité edit_users, qui est une fonctionnalité typique du rôle admin. De plus, il compare l'ID de l'utilisateur actuel et l'ID de l'utilisateur donné en paramètre. Si elles correspondent, l'instruction devient TRUE, car chaque utilisateur devrait avoir la possibilité de modifier son propre profil.

Le filtre map_meta_cap peut affecter ces évaluations. De ce fait, un plug-in pourrait accorder des privilèges à un utilisateur (ou à un groupe d'utilisateurs) sur un sous-ensemble de tous les utilisateurs. Penser à un rôle de "modérateur" ou quelque chose comme ça.

Chaque fois que votre code modifie certains paramètres ou données utilisateur, vous devez effectuer cette vérification si l'utilisateur actuel a le privilège de modifier ces données.

0
David