J'ai été surpris de découvrir que add_role () modifie la base de données et échoue si le rôle existe déjà. Il y a deux implications ici, l'une d'abord plus sérieuse que l'autre: 1) si vous êtes en développement et mettez à jour votre code add_role, vous devez d'abord remove_role () 2) une fois que vous avez bien compris, vous ne devriez jamais avoir à exécuter ce code encore.
Donc, généralement, j'ai mis mon add_role () dans un crochet d'action wp_loaded. Et depuis que je suis en développement, j'ai également ajouté un remove_role () avant mon add_role afin que je puisse être sûr que si je modifie ma liste de majuscules, cela prendra effectivement effet.
Mais il est clair que cela est désormais exécuté chaque fois qu'une page du blog est consultée. D'accord, je pourrais le mettre dans une action réservée aux administrateurs, ou je pourrais créer une page de plugin sous Utilisateurs ou Outils, où ce rôle peut être créé une fois. Je suppose que j'espère qu'il existe une solution plus simple et plus élégante.
Je n'imagine pas qu'il y a une sorte d'action run_once, n'est-ce pas?
Ou la meilleure pratique consiste-t-elle simplement à ajouter le rôle, puis à utiliser add_cap () plusieurs fois? Et même alors, j'imagine que add_cap accède à la base de données.
Je pense simplement à la meilleure façon de réduire l'accès inutile aux bases de données. Quelles sont vos bonnes pratiques?
remove_role()
fonction avantadd_role()
m'a aidé.