He investigado esto varias veces, pero mi búsqueda no revela mucho, excepto el código personalizado que puede o no ser una buena práctica de WordPress.
A partir de las últimas versiones (WordPress 3.9 "Smith"), ¿ se ha agregado un gancho al proceso de actualización del complemento? Lo pregunto porque es una necesidad muy básica, pero aún no lo veo agregado al códice (todavía). Si no es así, ¿qué emplean los desarrolladores comunes y las mejores prácticas?
EDITAR: Solo para aclarar, no estoy hablando de activación, sino de actualización, de esa manera, si hay cambios en la base de datos o de lo contrario se puede abordar.
plugin-development
actions
upgrade
usuario1915665
fuente
fuente
Respuestas:
No creo que se haya agregado una acción. Puede ver los detalles de la versión para cualquier versión y ver las nuevas acciones agregadas.
La forma en que WordPress ejecuta el código en la actualización del complemento es lo que se describe aquí :
y con el ejemplo de código aquí :
fuente
register_activation_hook
, ya que en la mayoría de los casos un complemento se desactiva / activa cada vez que lo actualizas desde el administrador. Enganchar aplugins_loaded
hará su verificación en cada carga de la página (incluida la interfaz). Se habló de presentarregister_update_hook
, pero fue marcado como WONTFIX hace un tiempo. La discusión allí es útil.De la discusión en la que decidieron no agregar un enlace / función personalizado específico para la actualización , parece que "la mayoría de la gente" (a partir de hace 4 años) usa
register_activation_hook
, ya que se llama cuando se actualiza un complemento a través de la página de administración; La mayoría de los ejemplos que he visto desde entonces siguen esa tendencia.Para la mayoría de los usos, sugeriría que no se conecte
plugins_loaded
, ya que se llamaría en cada carga de página. La excepción a esto se menciona en la discusión: las rutas de actualización a través de FTP / SVN son 'casos extremos', ya que WP no tendría un mecanismo para saber que se modificó el complemento, en cuyo caso la respuesta anterior podría ser más relevante.Ver https://gist.github.com/zaus/c08288c68b7f487193d1 para un ejemplo de 'marco simple' usando
register_activation_hook
.fuente
register_activation_hook
no se garantiza que se ejecute en las actualizaciones, consulte make.wordpress.org/core/2010/10/27/…plugins_loaded
, ejecuta cada carga y puede ser pesado / lento.Desde WordPress 3.9 puedes usar
upgrader_process_complete
hook.Ver referencia 1 , 2
Aquí hay un código de ejemplo:
Una vez actualizado el complemento, configurará la tarea en db usando la
set_transient()
función. No se recomienda agregar un código de actualización al llamar aupgrader_process_complete
hook.A continuación, si navega a otra página de administración, el
plugins_loaded
enlace funcionará y el código de actualización funcionará allí.Tenga en cuenta que este complemento debe estar activado para que funcione el enlace de actualización.
Esto no funciona en el complemento de activación, por lo tanto, si desea que el código que funciona active el complemento, debe codificarlo en
register_activation_hook()
función.fuente