it-swarm-es.com

¿Actualizaciones para un plugin privado?

Si escribo un complemento privado, ¿hay alguna forma de usar el mecanismo de actualización automática de WordPress para actualizarlo?

Quiero encapsular la funcionalidad, pero es específica de mis 5 o más blogs, por lo que no es un buen candidato para el recurso de complementos públicos. Pero me encanta el mecanismo de fácil actualización.

¿Hay alguna forma de hacer esto?

112
artlung

Parece que el código aplicable está en wp-includes/update.php, wp_update_plugins():

$to_send = (object) compact('plugins', 'active');

$options = array(
    'timeout' => ( ( defined('DOING_CRON') && DOING_CRON ) ? 30 : 3), 
    'body' => array( 'plugins' => serialize( $to_send ) ),
    'user-agent' => 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' )
);  

$raw_response = wp_remote_post('http://api.wordpress.org/plugins/update-check/1.0/', $options);

Se comprueba específicamente api.wordpress.org. Técnicamente hablando, sería posible pasar una clave dentro de $to_send para delegar el cheque, pero que yo sepa que no es una característica compatible.

Si engancha en set_site_transient_update_plugins podría agregar sus propios detalles de paquete en esta variable. Parece que esos valores serán de confianza cuando ejecute el actualizador de complementos. Ver wp-admin/update.php y wp-admin/includes/class-wp-upgrader.php. Dado el código en estas dos funciones, creo que sería posible inyectar su propio servidor de actualización, solo necesita ver cómo se formatean los detalles del paquete y cómo hacerlo coincidir.

45
Annika Backstrom

Este plugin lo hace por ti:

Actualizaciones automáticas para plugins privados y comerciales

Desde tiempos inmemoriales, solo los complementos alojados en el directorio oficial de complementos de WordPress.org han admitido actualizaciones automáticas. Ahora, he escrito una PHP biblioteca que puede usar para agregar capacidades de actualización automática a cualquier complemento. Complementos públicos, privados y comerciales por igual: todos ahora pueden disfrutar de los beneficios de las notificaciones de actualización automática y las actualizaciones de un clic.

Repositorio GitHub

40
agileapricot

Si te gusta gratis ... y quieres usar algo como GitHub, GitLab o BitBucket, este es un complemento de buena calidad y compatible para su manejo (compatible con empresas privadas):

https://github.com/afragen/github-updater

9
sMyles

Estoy buscando lo mismo. Un par de enlaces que he encontrado que podrían ser útiles:

La primera es alguna información y punteros a la API de actualizaciones. El segundo es un fragmento de código que muestra cómo solicitar información de la API.

8
Dougal Campbell

Es posible que desee revisar el complemento del kit de desarrollo de WordPress . Recientemente migré mi sistema de actualización propietario a este complemento. El complemento ahora sirve como procesador de servicios de fondo para mis actualizaciones de complementos premium.

Esto es similar en la configuración a la solución proporcionada por agileapricot arriba. Se instalará como un complemento estándar en un sitio de WordPress. Aloja sus archivos premium .Zip y los plugins.json en los directorios de producción o de versión preliminar en su servidor (especificados en la configuración del complemento).

El complemento también le permite listar versiones de complementos e incluso puede proporcionar una descarga para los archivos en páginas públicas, protegidas por contraseña o protegidas por suscripción. Puede ver un ejemplo de la lista de versiones en página aquí .

He estado usando el complemento durante meses para publicar el registro de cambios para mis complementos premium, la lista de versiones actuales y las listas de descargas para mis titulares de suscripción Premier. Ahora, con la versión 0.7.01, funciona como el destino de la consulta para las actualizaciones de WordPress en línea.

Espero que algunos de ustedes lo encuentren útil.

1
Lance Cleveland

Si desea una solución alojada que no tiene que administrar, consulte Kernl ( https://kernl.us ). Es un servicio que proporciona la infraestructura para actualizar complementos y facilita la integración en sus propios complementos.

1
Jack Slingerland