WordPress CLI installieren und nutzen

Für das Content-Management-System WordPress existiert neben dem eigentlichen System auch eine separate Kommandozeile. Die hört auf den Namen WP-CLI und muss im ersten Schritt installiert werden:

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
mv wp-cli.phar /usr/local/bin/wp

Damit ist die WP-CLI installiert und kann über das Kommando:

wp --info

getestet werden. Um WP-CLI aktuell zu halten, kann das Kommando:

wp cli update

genutzt werden.

Grundsätzlich sollten die Befehle der WP-CLI im Kontext des Webserver-Nutzers ausgeführt werden. In den meisten Fällen ist dies www-data. Eine Ausnahme bilden die Befehle zur Installation und zur Aktualisierung. Wird versucht ein WP-CLI-Befehl unter dem root-Nutzer auszuführen, so erhält der Nutzer folgende Meldung:

Error: YIKES! It looks like you’re running this as root. You probably meant to run this as the user that your WordPress installation exists under.

If you REALLY mean to run this as root, we won’t stop you, but just bear in mind that any code on this site will then have full control of your server, making it quite DANGEROUS.

If you’d like to continue as root, please run this again, adding this flag: –allow-root

If you’d like to run it as the user that this site is under, you can run the following to become the respective user:

sudo -u USER -i — wp

Per sudo mit dem korrekten Nutzer ausgeführt funktioniert das Ganze:

sudo -u www-data wp transient delete --all
Success: 163 transients deleted from the database.

Mittels der WP-CLI lassen sich eine Reihe von Aufgaben bewerkstelligen. So verfügt die CLI über Methoden, um Kommentare zu erzeugen und zu verwalten. Mit dem Befehl:

wp comment delete $(wp comment list --status=spam --format=ids)

können z.B. alle Spam-Kommentare gelöscht werden. Über den core-Namespace können unter anderem WordPress-Updates vorgenommen werden:

wp core update

Vor allem im Zusammenhang mit einer Automation spielt WP-CLI seine Stärken aus. So können neue WordPress-Installationen angelegt werden und entsprechende Plugins automatisch installiert werden. In der Entwickler-Dokumentation von WordPress findet sich eine Referenz der Befehle der WP-CLI.

Entwickelt wird WP-CLI auf Github. Lizenziert ist das CLI unter der MIT-Lizenz und damit freie Software. Die offizielle Seite des Projektes ist unter wp-cli.org zu finden.

Freies Soundboard nun mit Broadcast-Funktionalität

Vor einigen Jahren hatte ich ein Soundboard entwickelt, welches ich vor allem für Pen & Paper-Rollenspiele benutzt habe. In Zeiten einer weltweiten Pandemie wäre es ziemlich unverantwortlich sich für ein solches Pen & Paper zusammen in einen Raum zu sitzen. Aus diesem Grund habe ich mein Soundboard um eine Broadcast-Funktionalität erweitert. Damit kann der Gamemaster die Master-Komponente nutzen, während die Spieler die Broadcast-Variante benutzen.

Das neue Soundboard; nun mit einer Remote-Komponente

Technisch läuft die Kommunikation der einzelnen Clients mit der Master-Komponente über einen Websocket-Server der in PHP implementiert wurde. Wenn der Gamemaster einen Clip abspielt, wird dieser bei den Spielern ebenfalls abgespielt. Jeder Spieler kann die Gesamtlautstärke individuell einstellen, während der Gamemaster die relative Lautstärke der Clips zueinander einstellen kann.

Zur Nutzung des Soundboard müssen die Soundclips in den assets-Ordner kopiert werden und dazu eine passende boards.json-Datei geschrieben werden. Ein Beispiel dieser Datei befindet sich im Repository. Anschließend kann das Soundboard im Browser genutzt werden. Soundclips können einzeln oder in einer Schleife abgespielt werden. Für jeden Clip lässt sich daneben die Lautstärke einzeln regeln. Auch das Abspielen von mehreren Clips parallel ist kein Problem. Zu finden ist das Soundboard auf GitHub. Lizenziert ist es unter der AGPL in der Version 3 und somit freie Software.

PHP-Version in der Shell bei all-inkl einstellen

Beim Webhoster all-inkl wird bei den größeren Paketen ein SSH-Zugang zu einer Shell mit angeboten. Mit diesem Zugang ist es unter anderem möglich PHP auf der Konsole auszuführen. Standardmäßig geschieht dies über den Befehl php. Aktuell nutzt der Befehl die Version 7.0.33 von PHP. Soll stattdessen eine höhere Version genutzt werden, so kann die symbolische Verknüpfung entsprechend verändert werden:

ln -sfv /usr/bin/php73 /usr/bin/php

Damit würde der Befehl php nun auf ein PHP in Version 7.3 zeigen. Neben der Version 7.3 sind noch weitere Versionen verfügbar:

/usr/bin/php56
/usr/bin/php70
/usr/bin/php71
/usr/bin/php72
/usr/bin/php73

Auch ohne Änderung der symbolischen Verknüfung kann die gewünschte PHP-Version verwendet werden, indem sie direkt aufgerufen wird:

/usr/bin/php72 update.php

In diesem Fall würde das Skript update.php mit der PHP-Version 7.2 ausgeführt werden.

Umfragen mittels freier Software durchführen

Wer online Umfragen durchführen möchte, kann für diesen Zweck unterschiedlichste Webtools nutzen. Das Problem an den meisten dieser Tools ist das die Verarbeitung bei einem Drittanbieter erfolgt und der Nutzer somit keine Kontrolle und Hoheit über die gesammelten Daten hat. Vor allem bei sensiblen Daten empfiehlt es sich das entsprechende Umfragen-Tool selbst zu hosten. Mit LimeSurvey, existiert ein solches Tool, welches daneben freie Software ist.

Eine Umfrage mittels LimeSurvey

Mithilfe von LimeSurvey können Umfragen, Befragungen und vieles mehr realisiert werden. So sind z.B. unter anderem anonyme Umfragen möglich, bei denen die Antworten und die Teilnehmer nicht mehr miteinander in Verbindung gebracht werden können. Die offizielle Seite von LimeSurvey ist unter limesurvey.org zu finden. Der eigentliche Quelltext ist unter anderem auf GitHub zu finden. Lizenziert ist LimeSurvey unter der GPL in Version 2.

WordPress-Themes und die GPL

Das Content Management System WordPress ist unter der GPL lizenziert und damit stellt sich die Frage, ob Themes unter WordPress ebenfalls unter der GPL lizenziert sind? Die kurze Antwort: Themes müssen unter der GPL lizenziert werden. Im Detail können bei der Frage allerdings Abstufungen vorgenommen werden. Die GPL definiert eine Reihe von Freiheiten:

Die Freiheit, das Programm auszuführen wie man möchte, für jeden Zweck (Freiheit 0).

Die Freiheit, die Funktionsweise des Programms zu untersuchen und eigenen Datenverarbeitungbedürfnissen anzupassen (Freiheit 1). Der Zugang zum Quellcode ist dafür Voraussetzung.

Die Freiheit, das Programm zu redistribuieren und damit Mitmenschen zu helfen (Freiheit 2).

Die Freiheit, das Programm zu verbessern und diese Verbesserungen der Öffentlichkeit freizugeben, damit die gesamte Gesellschaft davon profitiert (Freiheit 3). Der Zugang zum Quellcode ist dafür Voraussetzung.

Da die PHP-Dateien eines Themes die unter der GPL lizenzierten Schnittstellen von WordPress nutzen, muss das Theme ebenfalls unter der GPL lizenziert werden. Das Theme läuft niemals für sich alleine, sondern benötigt zwingend die entsprechenden WordPress-Schnittstellen. Sobald ein Theme distribuiert wird, muss es unter der GPL lizenziert werden.

Mit Themes lässt sich das Aussehen der Webseite anpassen

Mark Jaquith, einer der Entwickler von WordPress drückte das Ganze wie folgt aus:

Theme code necessarily derives from WordPress and thus must be licensed under the GPL if it is distributed.

Der Einwand, welcher ab und an vorgebracht wird, das mit einem GPL-Theme kein Geld verdient ist dabei haltlos. Die GPL verbietet es nicht mit GPL-Software Geld zu verdienen. So kann ein Ersteller eines Themes die Themes verkaufen. Natürlich könnte nun ein Käufer das Theme anderweitig bereitstellen, allerdings kann der Nutzer bei vielen Erstellern Updates der Themes und Support dazu kaufen. Dies stellt einen Mehrwert gegenüber eine Theme da, welches eventuell schon veraltet ist.

Theoretisch können WordPress-Themes unter unterschiedlichen Lizenzen angeboten werden. Dies war beim Theme Thesis der Fall. Hier sind sämtliche PHP-Dateien unter der GPL lizenziert, während CSS- und JavaScript-Dateien proprietär sind. Interessant wird es bei Lizenzbedingungen, des Theme-Erstellers, welche gegen die GPL verstoßen. Technisch betrachtet dürften solche Themen nicht mit WordPress genutzt werden.

WordPress ist nicht das einzige System, bei welchem sie die Rechtslage so darstellt, so erklärt die FAQ des Content Management Systems Drupal:

Drupal modules and themes are a derivative work of Drupal. If you distribute them, you must do so under the terms of the GPL version 2 or later. You are not required to distribute them at all, however. (See question 8 below.)

Wie sieht, es in dem Fall aus das ein Theme erstellt wurde und dieses Theme auf der eigenen Webseite genutzt wird? Muss dieses Theme nun unter GPL bereitgestellt werden? Die Antwort darauf ist nein. Der Grund hierfür ist das, wenn ich ein unter GPL lizenziertes Produkt ausliefere, ich den Quelltext dazu veröffentlichen muss. Allerdings liefert WordPress keine Themes, sondern Webseiten aus. Deshalb muss der Quelltext des Themes nicht bereitgestellt werden. Wäre dies der Fall wären z.B. alle Dokumente welche mit LibreOffice erstellt werden auch unter der GPL lizenziert werden. Dazu noch einmal Mark Jaquith:

No. The GPL is triggered by distribution. Work-for-hire for a client is not distribution. In this case, they would have the copyright on the code. Distributing it would be up to them. As long as they didn’t distribute it, the GPL wouldn’t kick in. Your clients needn’t worry.