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"?
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.
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).