Updates einer WordPress-Site programmatisch mit PHP ausführen

WordPress bietet uns über den Punkt DashboardAktualisierungen eine ziemlich komfortable Möglichkeit, Updates für Core, Themes, Plugins und Übersetzungen einzuspielen.

Manchmal ist diese Möglichkeit aber nicht genug – ich arbeite beispielsweise gerade an einem Projekt, das Updates programmatisch anstoßen muss. Dabei wäre ein naheligender Weg die Nutzung von WP-CLI, der Weg ist mir allerdings versperrt, und so habe ich mich näher mit den PHP-Funktionen beschäftigt, die sich um Updates kümmern.

Block-Patterns erstellen

Seit WordPress 5.5 können sogenannte Block-Patterns erstellt werden. Das sind Vorlagen von Inhaltselementen aus mehreren Blöcken (oder auch nur einem), die in einem Plugin oder Theme registriert und dann von der Benutzerin oder dem Benutzer über den Inserter eingefügt werden können.

So muss im Editor nicht mühsam zum Beispiel ein Hero-Element immer neu aus denselben Blöcken zusammengebaut oder von einer anderen Seite kopiert werden, sondern es kann ein Hero-Block-Pattern erstellt und dann genutzt werden.

Application Passwords in WordPress 5.6

Es ist jetzt fast auf den Tag fünf Jahre her, dass WordPress 4.4 vorgestellt wurde. Eines der großen Features war seiner Zeit die neue REST-API. Die Programmierschnittstelle wurde von viele (auch von mir) als großer Durchbruch und nächster Schritt in der Weiterentwicklung von WordPress gefeiert. Viel passiert ist seither nicht. Unter anderem auch deshalb, weil die API ab Werk keine Möglichkeit zur Authentifizierung mitgebracht hat.

WordPress 5.6, das am 8. Dezember 2020 veröffentlich werden soll, will diese Unzulänglichkeit nun beheben und legt den wichtigen Passwortschutz in Form von Application Passwords (auch für die ältere XML-RPC-API) nach.

Mein erster Workflow mit GitHub Actions

Ich habe heute zum ersten Mal einen »Workflow« mit »GitHub Actions« erstellt, um eine Travis-CI-Integration zu ersetzen. Erfreulicherweise ging das recht schnell von der Hand. Hier möchte ich den Prozess als kleinen Einstieg in das Thema beschreiben.

Bei dem Workflow geht es darum, das DEWP-Planet-Feed-Plugin nach Erstellen eines GitHub-Releases in einer direkt nutzbaren Form an den Release anzuhängen, damit Nutzerinnen und Nutzer nicht lokal NPM anwerfen und dann Webpack ausführen müssen, bevor sie es nutzen können.

REST-API-Antwort um eigenen Eintrag erweitern

Die REST-API ist ein Teil von WordPress, mit dem ich relativ selten direkt kommuniziere. Wenn, geht es oft um Filtermöglichkeiten für eine Post-Liste, die im Frontend angezeigt wird, das heißt: Der Website-User ändert einen Filter, wodurch im Hintergrund eine Anfrage an die REST-API geschickt und die Liste mit den Daten der Antwort angepasst wird.

Bis vor Kurzem habe ich dabei immer einiges an HTML innerhalb von JavaScript erzeugt, um das Markup für die einzelnen Posts mit den Daten der REST-API-Antwort zu erstellen. Immer mit Umständlichkeiten oder Dingen, die sich nicht einfach umsetzen lassen, etwa Markup für Responsive Images, das sonst bei bestimmten Bildfunktionen von WordPress direkt mit erstellt wird.

Beim letzten Anwendungsfall kam mir dann der Gedanke, ob das nicht auch schlauer geht.

Übersetzungsplattform mit GlotPress und Traduttore erstellen

Wer schon mal an WordPress oder einem der Plugins und Themes in den offiziellen Verzeichnissen mitübersetzt hat, wird translate.wordpress.org kennen – eine Plattform, auf der die Übersetzungen für (unter anderem) den WordPress-Core und viele tausend Plugins und Themes gepflegt werden.

Dahinter steht GlotPress, das es als WordPress-Plugin gibt, sodass sich theoretisch jeder und jede selbst eine solche Plattform aufsetzen kann, um zum Beispiel Übersetzungen für Plugins und Themes von Kundenprojekten zu pflegen (oder andere pflegen zu lassen), ohne für jedes Übersetzungsupdate auch ein Update des Themes oder Plugins bereitstellen zu müssen.

Für ein bisschen mehr Komfort dabei sorgt Traduttore, entwickelt von required, das zum Beispiel automatisch Strings aus Code-Repositorys extrahieren und Sprachpakete erstellen kann, auf die eine WordPress-Installation dann zugreift, als würden sie von translate.wordpress.org kommen.

Wiederverwendbare Blöcke zwischen Sites einer Multisite synchronisieren

Im Block-Editor können wiederverwendbare Blöcke erstellt werden. Diese Blöcke lassen sich dann wie Core- und Plugin-Blöcke normal einfügen. Sobald eine Instanz dieses Blocks bearbeitet wird, wird überall diese aktualisierte Version ausgespielt.

Ein nützlicher Anwendungsfall für diese wiederverwendbaren Blöcke ist beispielsweise die Darstellung von Team-Mitgliedern, wenn einzelne davon auch auf anderen Seiten als Ansprechpartnerinnen und Ansprechpartner angezeigt werden sollen. Hier zeige ich, wie sich diese Blöcke zwischen mehreren Sites einer Multisite synchronisieren lassen, um über das gesamte Netzwerk hinweg immer den aktuellen Stand anzuzeigen.