Sono stato sorpreso di scoprire che add_role () modifica il database e fallisce se il ruolo esiste già. Ci sono due implicazioni qui, una prima più grave dell'altra: 1) se sei in sviluppo e aggiorni il tuo codice add_role, devi prima rimuovere_role () 2) una volta che hai ragione, non dovresti mai eseguire quel codice ancora.
Quindi in genere ho inserito il mio add_role () all'interno di un hook di azione wp_loaded. E poiché sono in fase di sviluppo, ho anche aggiunto un remove_role () prima del mio add_role in modo da poter essere sicuro che se modifico il mio elenco di maiuscole, avrà effettivamente effetto.
Ma chiaramente questo è ora in esecuzione ogni volta che si accede a una pagina del blog. Va bene, potrei metterlo in un'azione di solo amministratore, o potrei creare una pagina di plugin, magari sotto Utenti o Strumenti in cui questo ruolo può essere creato una volta. Suppongo di sperare che esista una soluzione più semplice ed elegante.
Non immagino che ci sia un tipo di azione run_once?
O è la migliore pratica solo per aggiungere il ruolo e quindi utilizzare add_cap () un sacco di volte? E anche allora immagino che add_cap stia accedendo al db.
Basti pensare in termini del modo migliore per ridurre l'accesso db non necessario. Quali sono le tue migliori pratiche?
remove_role()
funzione primaadd_role()
mi ha aiutato.