Me sorprendió descubrir que add_role () modifica la base de datos y falla si el rol ya existe. Aquí hay dos implicaciones, una primera más seria que la otra: 1) si está en desarrollo y actualiza su código add_role, primero debe eliminar remove_role () 2) una vez que lo tiene correcto, nunca debería tener que ejecutar ese código de nuevo.
Por lo general, he estado poniendo mi add_role () dentro de un gancho de acción wp_loaded. Y como estoy en desarrollo, también agregué un remove_role () antes de mi add_role, así puedo estar seguro de que si modifico mi lista de mayúsculas, surtirá efecto.
Pero claramente esto se está ejecutando cada vez que se accede a una página del blog. De acuerdo, podría ponerlo en una acción solo para administradores, o podría crear una página de complemento tal vez en Usuarios o Herramientas, donde este rol se puede crear una vez. Supongo que espero que haya una solución más simple y elegante.
No me imagino que haya un tipo de acción run_once ¿existe?
¿O es la mejor práctica simplemente agregar el rol y luego usar add_cap () varias veces? E incluso entonces imagino que add_cap está accediendo a la base de datos.
Solo pensando en términos de la mejor manera de reducir el acceso innecesario a db. ¿Cuáles son tus mejores prácticas?
remove_role()
función antesadd_role()
me ayudó.