web-dev-qa-db-fra.com

current_user_can ('Administrateur') ne renvoie pas la valeur true dans le multisite si l'utilisateur est administrateur mais PAS super administrateur

J'ai une installation WordPress multisite configurée et un utilisateur défini sur le rôle "Administrateur" sur les deux sites. Cependant, la fonction current_user_can('Administrator') ne renvoie pas la valeur true une fois connecté, ce à quoi je m'attendais.

Mon compte utilisateur, cependant, est un "administrateur" sur les deux sites et également un "super administrateur" sur le réseau et l'appel retourne pour moi à raison.

Pourquoi est-ce? Le premier utilisateur ne devrait-il pas être faux si vous cochez la case 'Super Admin' et pas seulement 'Administrateur'?

Si cela pose un problème, puis-je vérifier si un utilisateur est défini sur le rôle "Administrateur" sans être un "super administrateur"?

1
Blake Mann

Je conviens que current_user_can ('Administrateur') devrait renvoyer true pour l'utilisateur. Toutefois, current_user_can est principalement conçu pour vérifier les fonctionnalités, ce qui est généralement une vérification plus robuste.

Je suggérerais quelque chose comme ceci (non testé):

if ( current_user_can( 'activate_plugins' ) && ! current_user_can( 'update_core' ) ) {
//...
}

Il s’agit donc de vérifier si l’utilisateur actuel peut activer les plugins mais ne peut pas mettre à jour le noyau. Cela doit renvoyer true pour les administrateurs et false pour les administrateurs de réseau, car update_core multisite est réservé aux administrateurs de réseau.

1
vancoder

Il y a une typo dans votre expression, utilisez current_user_can('administrator') au lieu de current_user_can('Administrator') (a au lieu de A).

3
dvp