it-swarm.dev

Updates für ein privates Plugin?

Gibt es eine Möglichkeit, ein privates Plugin mithilfe des automatischen Update-Mechanismus von WordPress zu aktualisieren?

Ich möchte die Funktionalität zusammenfassen, aber sie ist spezifisch für meine eigenen 5 oder so Blogs, daher ist sie kein guter Kandidat für die Ressource der öffentlichen Plugins. Aber ich mag den einfach zu aktualisierenden Mechanismus.

Gibt es eine Möglichkeit, dies zu tun?

112
artlung

Der zutreffende Code befindet sich anscheinend in 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);

Es prüft speziell api.wordpress.org. Technisch gesehen wäre es möglich, einen Schlüssel innerhalb von $to_send zu übergeben, um die Prüfung zu delegieren, aber meines Wissens ist dies keine unterstützte Funktion.

Wenn Sie sich in set_site_transient_update_plugins einbinden, können Sie dieser Variablen Ihre eigenen Paketdetails hinzufügen. Es sieht so aus, als ob diese Werte vertrauenswürdig sind, wenn Sie den Plugin-Updater ausführen. Siehe wp-admin/update.php und wp-admin/includes/class-wp-upgrader.php. Angesichts des Codes in diesen beiden Funktionen ist es meines Erachtens möglich, einen eigenen Update-Server einzuschleusen. Sie müssen lediglich prüfen, wie die Paketdetails formatiert sind und mit diesen übereinstimmen.

45

Dieses Plugin erledigt das für Sie:

Automatische Updates für private und kommerzielle Plugins

Seit jeher unterstützen nur Plugins, die im offiziellen Plugin-Verzeichnis von WordPress.org gehostet werden, automatische Updates. Jetzt habe ich eine PHP Bibliothek geschrieben, mit der Sie jedem Plugin automatische Aktualisierungsfunktionen hinzufügen können. Öffentliche, private und kommerzielle Plugins - alle können jetzt die Vorteile automatischer Aktualisierungsbenachrichtigungen und Upgrades mit einem Klick nutzen.

GitHub-Repository

40
agileapricot

Wenn Sie gerne kostenlos ... und etwas wie GitHub, GitLab oder BitBucket verwenden möchten, ist dies ein qualitativ gutes und unterstütztes Plugin für die Handhabung (unterstützt private und geschäftliche):

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

9
sMyles

Ich schaue in die gleiche Sache. Ein paar Links, die ich gefunden habe, die hilfreich sein könnten:

Das erste enthält einige Informationen und Verweise auf die Upgrades-API. Der zweite Code ist ein Codeausschnitt, der zeigt, wie Informationen von der API angefordert werden.

8
Dougal Campbell

Vielleicht möchten Sie sich das WordPress Development Kit-Plugin ansehen. Ich habe kürzlich mein proprietäres Update-System auf dieses Plugin migriert. Das Plugin dient jetzt als Back-End-Prozessor für meine Premium-Plugin-Updates.

Dies ist im Aufbau ähnlich zu der Lösung, die oben von agileapricot bereitgestellt wurde. Es wird als Standard-Plugin auf einer WordPress-Site installiert. Sie hosten Ihre Premium-ZIP-Dateien und die Datei plugins.json in Produktions- oder Vorabversionsverzeichnissen auf Ihrem Server (angegeben in den Einstellungen für das Plugin).

Mit dem Plugin können Sie auch Plugin-Versionen auflisten und die Dateien sogar auf öffentlichen, kennwortgeschützten oder abonnementgeschützten Seiten herunterladen. Sie können ein Beispiel für die Versionsliste auf der Seite hier sehen.

Ich benutze das Plugin seit Monaten, um das Änderungsprotokoll für meine Premium-Add-Ons, die Liste der aktuellen Versionen und Download-Listen für meine Premier-Abonnenten zu veröffentlichen. Ab Version 0.7.01 fungiert es nun als Abfrageziel für Inline-WordPress-Updates.

Hoffe, einige von euch finden es nützlich.

1
Lance Cleveland

Wenn Sie eine gehostete Lösung suchen, die Sie nicht verwalten müssen, lesen Sie Kernl ( https://kernl.us ). Es handelt sich um einen Dienst, der die Infrastruktur zum Aktualisieren von Plugins bereitstellt und die Integration in Ihre eigenen Plugins vereinfacht.

1