
WordPress plugin update hook
09/09/2022

Lista de ganchos de WordPress
Hace algunas semanas, recibí un correo electrónico sobre WP Photo Sphere, un plugin de WordPress que desarrollé. Había un gran problema: la actualización del plugin lo rompía en algunas instalaciones. Después de investigar un poco, descubrí que el problema venía de las opciones usadas por el plugin: estas instalaciones no tenían ningún valor por defecto para las nuevas opciones que añadí.
Por eso se me ocurrió escribir este tutorial. En primer lugar, veremos exactamente por qué necesitamos un proceso de actualización y por qué WordPress no proporciona dicho proceso. Luego le mostraré cómo crear adecuadamente su propio proceso para actualizar sus opciones.
A menudo, cambiar los archivos no es suficiente para actualizar correctamente algo. Por ejemplo, cuando usted actualiza manualmente los archivos de WordPress a una nueva versión, la plataforma le pedirá que pulse un botón para actualizar la base de datos también.
Asume que utilizas opciones en tu plugin. A medida que tu plugin evoluciona, necesitarás más opciones en las nuevas versiones. Crear nuevas opciones cuando un usuario activa tu plugin por primera vez es fácil, sólo tienes que usar el hook de activación.
Gancho de activación de WordPress
A partir de las últimas versiones (WordPress 3.9 "Smith"), ¿se ha añadido un gancho al proceso de actualización del plugin? Lo pregunto porque es una necesidad muy básica, pero no veo que se haya añadido al códice (todavía). Si no es así, ¿cuál es la práctica común y mejor que emplean los desarrolladores?
La forma correcta de manejar una ruta de actualización es ejecutar un procedimiento de actualización sólo cuando sea necesario. Lo ideal sería almacenar una "versión" en la opción de la base de datos de tu plugin, y luego una versión en el código. Si no coinciden, se dispara el procedimiento de actualización, y luego se establece la opción de la base de datos para igualar la versión en el código. Así es como muchos plugins manejan las actualizaciones, y así es como funciona el núcleo también.
De la discusión en la que decidieron no añadir un gancho/función personalizado específico para la actualización, parece que "la mayoría de la gente" (desde hace 4 años) utiliza register_activation_hook, ya que se llama cuando un plugin se actualiza 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 yo sugeriría no enganchar a través de plugins_loaded, ya que sería llamado en cada carga de la 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 el plugin fue cambiado, en cuyo caso la respuesta anterior podría ser más relevante.
Ganchos de WordPress
Desarrollo de pluginsHe creado un pequeño plugin que envía un correo electrónico después de un cuestionario Learndash se ha completado.Yo uso el gancho learndash_quiz_completed para que y estaba funcionando bien hasta recientemente.Después de actualizar el plugin Learndash (3.6.0.3), esto ya no funciona. La documentación de Learndash no refleja ningún cambio en el gancho en sí.Cualquier ayuda para solucionar esto sería apreciada.7 commentsshareshidereport100% UpvotedSort by: best
Registro_de_activación_del_gancho
misha-update-checker.zip es la nueva versión del plugin, info.json contiene toda la información de la actualización, más abajo y dos imágenes que se mostrarán en el admin de WordPress cuando se vea la información del plugin.
Esto es lo que sucede si omite este consejo: después de hacer clic en el botón "Actualizar", su antigua versión del plugin será eliminada, pero la nueva no la reemplazará, sino que se creará en una carpeta generada aleatoriamente como misha-update-checker-xhfuif/ como resultado obtendrá un aviso: "El plugin ha sido desactivado debido a un error: El archivo del plugin no existe".
Normalmente, cuando se hace clic en "Ver detalles", WordPress muestra la información apropiada del plugin desde su propio servidor de actualización wordpress.org. Y lo más interesante es que esta información se puede enganchar antes de que WordPress se conecte al servidor de wordpress.org.