web-dev-qa-db-fra.com

Ajout de capacités aux super administrateurs

Je développe un plugin qui utilise des capacités personnalisées. Certaines de ces fonctionnalités doivent être ajoutées à tous les utilisateurs qui sont des super administrateurs. Actuellement, j'utilise ce code:

$supers = get_super_admins();
foreach ( $supers as $admin ) {
    $user = new WP_User( 0, $admin );
    $user->add_cap( 'my_cap' );
    $user->add_cap( 'my_second_cap' );
}

Cependant, je crains que ce code n’ajoute que les fonctionnalités aux utilisateurs individuels, par opposition au rôle que je jouerais habituellement. Si un nouveau super administrateur est créé, ils ne disposeront pas de ces fonctionnalités car cette fonction ne fonctionne que lors de l'activation du plug-in.

Existe-t-il un meilleur moyen d’ajouter des fonctionnalités personnalisées aux super-administrateurs?

3
shea

Bien que cela ne soit pas bien documenté, "Super Admin" n'est pas un rôle (en ce sens qu'il ne s'agit pas d'un objet de rôle réel). Cela ressemble plus à un "statut" spécial.

Une liste des utilisateurs qui sont des super administrateurs (également appelés "administrateurs de réseau" ou "administrateurs de site") est stockée dans un enregistrement d'option de site de base de données appelé site_admins. En règle générale, l'ajout d'une fonctionnalité au rôle d'administrateur suffit, car les super-administrateurs sont également, de facto, membres du rôle d'administrateur doté de toutes ses fonctionnalités.

Cela dit, si vous devez spécifiquement ajouter une fonctionnalité uniquement aux Super Admins (mais pas aux administrateurs "normaux"), il serait peut-être préférable d'utiliser simplement la fonction is_super_admin() de WordPress plutôt que d'utiliser des fonctionnalités, car il est supposé que les Super Admins n'ont restrictions.

Si vous devez réellement utiliser des fonctionnalités, vous devez utiliser les points d'ancrage grant_super_admin et remove_super_admin pour ajouter ou supprimer des fonctionnalités aux utilisateurs Super Admin (respectivement) dès que leur statut Super Admin change .

Maintenant, s’agissant de la modification des capacités des utilisateurs super-administrateurs existants, votre approche est la meilleure: extraire une liste d’utilisateurs super-admin, la parcourir et y ajouter des fonctionnalités (bien que vous n’ayez besoin que de l'exécuter une seule fois TOUJOURS si vous avez utilisé les crochets ci-dessus).

6
Matt van Andel