Updates für private WordPress-Plugins

Updates für private WordPress-Plugins
Photo by Justin Morgan on Unsplash
Veröffentlicht am 24. April 2022 von Timo Förster in der Kategorie Technologie

WordPress-Plugins als Eigenentwicklung kommen immer dort zum Einsatz, wo einem der WordPress-Plugin-Store und Plattformen wie Envato nicht weiterhelfen. Die spezifischen Anforderungen des Kunden an seine WordPress Seite führt dazu, dass ein Custom Plugin entwickelt wird. Dieses soll in aller Regel nicht im öffentlichen Plugin-Store auftauchen, sondern privat bleiben.

Die Erstinstallation von privaten WordPress-Plugins wird in der Regel über den manuellen Direktupload einer Zip-Datei oder per (S)FTP vorgenommen. Nach der Aktivierung lässt sich das selbstentwickelte WordPress-Plugin so ganz normal nutzen.

Aktualisierung von selbstentwickelten WordPress-Plugins

Doch wie hält man diese privaten Plugins aktuell?

Zum Verteilen von Updates an selbstentwickelte WordPress-Plugins gibt es unterschiedliche Möglichkeiten. Die beiden Erstgenannten kommen auch bei der Installation selbst zum Einsatz.

  1. Direktupload
  2. (S)FTP-Upload
  3. zentraler Update-Server

Direktupload

Plugin in WordPress hochladen
Button für manuellen Upload direkt neben der Überschrift
Diese Update-Methode kann auch von WordPress-Administratoren ohne eigene Programmiererfahrung korrekt durchgeführt werden. WordPress prüft dabei auch, ob das Plugin grundsätzliche Kompatibilität aufweist. Man benötigt das programmierte Plugin als Zip-Datei vom Webentwickler.

Hierbei wird die neue Version des Plugins über die Upload-Funktion hochgeladen. WordPress erkennt, dass es sich um dasselbe Plugin in einer neuen Version handelt und schlägt vor, die bestehende ältere Version des Plugins zu ersetzen.

(S)FTP-Upload

Beim Update über (S)FTP bedarf es schon mehr Vorsicht. Der Quellcode des bereits aktiven Plugins wird dabei von außen überschrieben. Inkompatibler PHP-Code oder WordPress Versionen schlagen direkt durch und können unmittelbar zu Ausfällen führen.

Dieses Vorgehen lässt sich jedoch automatisieren und das Risiko durch übliche Methoden in der Webentwicklung - wie automatisierten Tests - senken.

Zentraler Update-Server

Seit Version 5.8 von WordPress gibt es die Möglichkeit für Plugin-Entwickler eine eigene Update-URL im Plugin zu hinterlegen. Damit ist es möglich sich in den eingebauten Update-Mechanismus von WordPress einzuhängen und Updates an eigene Plugins zu verteilen.

<?php
/*
 * @wordpress-plugin
 * Plugin Name: Jobin-Hood Arbeitgeberprofile
 * Requires at least: 5.8
 * Version: 1.0.1
 * Update URI: https://update.webfoersterei.de/wp */

Das Hinterlegen der URL ist jedoch nur der erste Schritt. Es gilt sich nun per Action-Hook in die Erfassung von Plugin-Updates einzuhängen. Die neuen Hooks ermöglichen es - domainbezogen - die Updates selbst in die Hand zu nehmen und somit die Update-Erkennung von WordPress zu ändern - in diesem Fall alle Plugins mit einer Update-URI der Domain update.webfoersterei.de:

<?php
add_filter('update_plugins_update.webfoersterei.de', 'plugin_update_handler', 10, 4);
function plugin_update_handler($updateInfo, $pluginHeaders, $pluginFile, $language)
{
    $response = file_get_contents($pluginHeaders['UpdateURI']);
    return json_decode($response);
}

Als Webentwickler für private WordPress-Plugins ist noch der Endpunkt zu implementieren, der die Update-Informationen zurück an WordPress gibt.

Eine beispielhafte Antwort dieses Update-Endpunktes könnte so aussehen:

{
  "version":"1.0.2", 
  "package":"https:\/\/update.webfoersterei.de\/wp\/jobin-hood\/1.0.2.zip"
}

Ist das erledigt, erkennt WordPress die Updates selbst und bietet diese wie für normale öffentliche Plugins mit nur einem Klick zu Installation an.

Plugin-Update direkt in WordPress
Das Plugin lässt sich nun mit einem Klick direkt in WordPress updaten
Das spart im Betrieb gerade dann Zeit, wenn das Plugin auf vielen WordPress-Instanzen installiert ist, wertvolle Arbeitszeit, da ein Klick auf den Link "Jetzt aktualisieren" genügt.

Auch wir bei der webförsterei bilden regelmäßig Projekte in der Webentwicklung in Hamburg innerhalb von WordPress als updatebares, privates Plugin ab - beispielsweise die Arbeitgebersuche von Jobin-Hood oder die Jobbörse per XML-Schnittstelle.