web-dev-qa-db-fra.com

Mises à jour pour un plugin privé?

Si j'écris un plugin privé, existe-t-il un moyen d'utiliser le mécanisme de mise à jour automatique de WordPress pour le mettre à jour?

Je veux encapsuler la fonctionnalité, mais elle est spécifique à mes 5 blogs environ, de sorte que ce n'est pas un bon candidat pour la ressource plugins publics. Mais j'aime le mécanisme de mise à jour facile.

Y a-t-il un moyen de faire cela?

112
artlung

On dirait que le code applicable est dans 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);

Il vérifie spécifiquement api.wordpress.org. Techniquement, il serait possible de passer une clé dans $to_send pour déléguer le contrôle, mais à ma connaissance, cette fonctionnalité n'est pas prise en charge.

Si vous vous connectez à set_site_transient_update_plugins, vous pouvez ajouter les détails de votre package dans cette variable. Il semble que ces valeurs seront approuvées lorsque vous exécuterez le programme de mise à jour du plug-in. Voir wp-admin/update.php et wp-admin/includes/class-wp-upgrader.php. Étant donné le code de ces deux fonctions, je pense qu’il serait possible d’injecter votre propre serveur de mise à jour. Il vous suffit de regarder comment les détails du paquet sont formatés et adaptés.

45
Annika Backstrom

Ce plugin le fait pour vous:

Mises à jour automatiques pour les plugins privés et commerciaux

Depuis des temps immémoriaux, seuls les plugins hébergés dans le répertoire officiel des plugins WordPress.org ont pris en charge les mises à jour automatiques. Maintenant, j’ai écrit une bibliothèque PHP que vous pouvez utiliser pour ajouter des fonctionnalités de mise à jour automatique à n’importe quel plugin. Les plugins publics, privés et commerciaux - tous peuvent désormais profiter des avantages des notifications de mises à jour automatiques et des mises à niveau en un clic.

Dépôt GitHub

40
agileapricot

Si vous aimez la gratuité ... et souhaitez utiliser quelque chose comme GitHub, GitLab ou BitBucket, il s'agit d'un plug-in de bonne qualité et pris en charge pour sa gestion (supporte les entreprises et les particuliers):

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

9
sMyles

Je regarde dans la même chose. Quelques liens que j'ai trouvés pourraient être utiles:

Le premier est quelques informations et des pointeurs vers l'API de mise à niveau. Le second est un extrait de code montrant comment demander des informations à l'API.

8
Dougal Campbell

Vous pouvez consulter le plugin WordPress Development Kit . J'ai récemment migré mon système de mise à jour propriétaire vers ce plugin. Le plugin sert maintenant de processeur principal pour les mises à jour premium de mon plugin.

Cette configuration est similaire à la solution fournie par agileapricot ci-dessus. Il s’installera comme un plugin standard sur un site WordPress. Vous hébergez vos fichiers .Zip premium et le plugins.json dans les répertoires de production ou de pré-version de votre serveur (spécifiés dans les paramètres du plug-in).

Le plug-in vous permet également de répertorier les versions de plug-in et peut même fournir un téléchargement pour les fichiers sur des pages publiques, protégées par mot de passe ou protégées par abonnement. Vous pouvez voir un exemple de la liste de versions sur la page ici .

Cela fait des mois que j'utilise le plug-in pour publier le journal des modifications de mes add-onions premium, de la liste des versions actuelles et des listes de téléchargement pour mes détenteurs d'abonnement Premier. Désormais, avec la version 0.7.01, il fonctionne comme destination de la requête pour les mises à jour en ligne de WordPress.

J'espère que certains d'entre vous le trouvent utile.

1
Lance Cleveland

Si vous souhaitez une solution hébergée que vous n'avez pas à gérer, consultez Kernl ( https://kernl.us ). C'est un service qui fournit l'infrastructure de mise à jour des plugins et facilite son intégration dans vos propres plugins.

1