Crear funcionalidad de notificación de actualizaciones para mis temas

1 may 2011, 14:27:29
Vistas: 19.3K
Votos: 17

La pregunta es simple :) Estoy creando un tema que usaré en muchos sitios. Por lo tanto, no quiero tener que entrar en todos los sitios y subir los archivos por FTP cada vez que corrijo un error o hago una actualización del tema.

¿Hay alguna manera de crear un sistema de actualización como el de los plugins alojados en el directorio de WordPress?

¡Espero vuestras respuestas! ¡Gracias!

Resuelto:

Gracias a Chip Bennett por su excelente enlace. La biblioteca de actualización para temas ya está disponible en ese sitio. Puedes encontrarla aquí: http://w-shadow.com/blog/2011/06/02/automatic-updates-for-commercial-themes/

Considera siempre hacer una donación si ves un trabajo excelente que se ha puesto disponible de forma gratuita.

1
Comentarios

¡Usa Plugin Update Checker! Funciona tanto para plugins como para temas. https://github.com/YahnisElsts/plugin-update-checker

transbetacism transbetacism
4 ene 2018 23:47:57
Todas las respuestas a la pregunta 2
4

También puedes engancharte a la rutina de actualización del núcleo. (Estoy buscando enlaces a tutoriales, pero mi habilidad con Google está fallando esta mañana).

EDITADO:

Mira si este tutorial te ayuda. Explica cómo implementar actualizaciones automáticas para plugins privados/comerciales (es decir, que no están alojados en el repositorio oficial).

1 may 2011 17:30:34
Comentarios

Creo que es pre_set_site_transient_update_plugins

Wyck Wyck
1 may 2011 18:27:25

¡Gracias! Revisé tu enlace y los códigos del plugin no funcionaron, pero le pedí al chico que modificara la biblioteca para temas. Un par de días después ¡hizo uno! Y ahora funciona genial. ¡Pondré el enlace en mi pregunta! ¡¡Gracias!!

Sisir Sisir
8 jun 2011 20:01:29

Aquí hay un tutorial para actualizaciones automáticas de temas también del mismo sitio: http://w-shadow.com/blog/2011/06/02/automatic-updates-for-commercial-themes/

Jaroslav Klimčík Jaroslav Klimčík
11 ene 2016 20:38:25

pre_set_site_transient_update_plugins se ejecuta solo en el tema activado del sitio principal. Todas las demás actualizaciones de temas personalizados no se comprobarán, incluso si es un multisitio y hay otros temas personalizados activados en otros sitios.

vee vee
21 nov 2016 06:01:58
3

¡Una pregunta interesante! De hecho, creo que deberías crear un servicio para verificar actualizaciones. Por ejemplo, tu dominio.com/api/verificar-actualizacion. Esto podría devolver XML, JSON o información útil relacionada con la actualización, como la versión y la URL del archivo de actualización (el archivo actualizado debería ser un ZIP).

En tu tema puedes tener:

    <?php define('VERSION_DEL_TEMA', '1.1');

Cuando detectes una actualización desde la URL anterior (tu dominio.com/api/verificar-actualizacion), asumiendo que devuelve datos JSON como estos: {"version":"1.2","file":"tema.zip"}

¡Comparas la versión para verificar si hay una nueva actualización! Luego cambias al tema predeterminado con esta función http://codex.wordpress.org/Function_Reference/switch_theme (para que los usuarios vean un sitio funcional cuando accedan).

Después, tu código puede usar cURL o incluso file_get_contents para descargar el archivo ZIP (tema.zip en este caso).

Luego, eliminas todos los archivos de la carpeta de tu tema, extraes el ZIP y copias su contenido en la carpeta del tema.

¡Creo que así debería funcionar!

Puedes echar un vistazo a lo que hace WordPress. Encontré que está en el archivo wp-admin/includes/update-core.php, línea 288, función update_core.

1 may 2011 15:23:37
Comentarios

Básicamente esto, pero en lugar de usar curl o file_get usa la API HTTP de WordPress, http://codex.wordpress.org/HTTP_API

Wyck Wyck
1 may 2011 15:35:29

¡Genial Wyck, no lo sabía! ;)

kureikain kureikain
1 may 2011 15:39:21

¡Finalmente tuve tiempo para empezar a investigar sobre esto! Para la versión actual del tema puedo usar esta función http://codex.wordpress.org/Function_Reference/get_theme_data. Comenzaré a trabajar con el enfoque que indicaste.

Sisir Sisir
29 may 2011 23:06:11