COM.lounge GmbH

WP-CLI: Der große Leitfaden zur WordPress-Kommandozeile

WP-CLI: Der große Leitfaden zur WordPress-Kommandozeile

WordPress über das Web-Interface zu steuern ist recht komfortabel. Zumindest in vielen Fällen. Gerade als Linux-Nutzer wünscht man sich aber dann doch manchmal eine Kommandozeile, gerade wenn Tätigkeiten automatisiert werden sollen. Zum Glück gibt es mit WP-CLI („WordPress Commandline Interface“) eine Lösung. Und was WP-CLI kann, kann sich sehen lassen: WordPress installieren, Plugins aktualisieren, Datenbank-Dumps erstellen und wieder einlesen, Kommentare verwalten und noch vieles mehr.

Der Vorteil bei Nutzung von WP-CLI ist zudem, dass die WordPress-Dateien nicht vom Web-Server beschreibbar sein müssen. Gegenüber den automatisierten Updates, die WordPress mitbringt, ist dies ein klares Plus an Sicherheit, da kompromittierte Plugins dadurch keine weiteren Dateien ändern können.

[toc]

Voraussetzungen

Um WP-CLI nutzen zu können, musst du SSH-Zugriff auf Deinen Server haben. Ein billiger Shared Hosting tut es hier also nicht. Auch empfiehlt es sich, ein bisschen Erfahrung mit der Kommandozeile zu haben. Ich gehe daher im folgenden davon aus, dass du die Grundlagen einer Linux-Shell beherrschst.

WP-CLI installieren

Die Installation von WP-CLI ist relativ einfach. Dazu wechselst du zunächst in dein Home-Verzeichnis (wo man nach dem Einloggen wahrscheinlich schon ist). Dort lädst du dann WP-CLI mit folgendem Kommando herunter:

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

Es empfiehlt sich, zu testen, ob alles funktioniert:

$ php wp-cli.phar --info
PHP binary: /usr/bin/php5
PHP version: 5.6.17-0+deb8u1
php.ini used: /etc/php5/cli/php.ini
....

Gibt es dies oder ähnliches aus, dann funktioniert alles. Du kannst die Datei dann in deinen Pfad verschieben und ausführbar machen. Als root kann man sie z.B. nach /usr/local/bin kopieren, hier verschiebe ich sie allerdings in mein lokales bin/-Verzeichnis:

chmod 755 wp-cli.phar
mv wp-cli.phar ~/bin/wp

Nun heißt es also wp und kann entsprechend aufgerufen werden:

wp --info

Die Ausgabe hat sich hoffentlich nicht geändert.

So rufst du WP-CLI auf

Der Aufruf ist ja oben schon zu sehen, nur wird hinter wp dann noch ein Kommando und ggf. ein Unterkommando angehangen. So kannst du z.B. mit

wp comment list

alle Kommentare in deinem Blog auflisten lassen. Voraussetzung ist allerdings, dass du dieses Kommando innerhalb deiner WordPress-Instanz aufrufst (also dort, wo wp-login.php liegt oder tiefer im Verzeichnisbaum). Ansonsten kann ja WP-CLI schlecht wissen, auf welcher WordPress-Instanz es arbeiten soll.

Alternativ kannst du auch den Pfad zur WordPress-Instanz angeben:

wp --path=/var/www/example.org/htdocs/ comment list

Hier gehe ich davon aus, dass dein WordPress unter /var/www/example.org/htdocs/ liegt.

Multisite

Wenn du eine Multisite-Installation hast, wirst Du merken, dass du z.B. bei wp comment list nur die Kommentare des ersten Blogs angezeigt bekommst. Hier weiß WP-CLI nicht, welches Blog gemeint ist, da ja beide dieselbe WordPress-Installation und Datenbank besitzen.

Um eine bestimmte Site einer Multisite zu selektieren, musst du daher noch den --url-Parameter benutzen:

wp comment list --url=http://site2.example.org

Damit werden dann die Kommentare von site2.example.org aufgelistet. Dies gilt entsprechend für alle anderen Kommandos.

Die eingebaute Hilfe

WP-CLI hat eine ganze Menge von Kommandos und Unterkommandos. Hinzu kommen individuell noch diverse Parameter. Damit man sich das nicht alles merken oder dauernd nachschlagen muss, gibt es eine eingebaute Hilfe. Diese erreichst du, indem Du einfach

wp help

eingibst. Dies listet alle Kommandos und globale Parameter auf. Mit einem wp help <kommando> wird dann die Hilfe und die Unterkommandos zum entsprechenden Kommando ausgegeben und mit wp help <kommando> <unterkommando> dann die Beschreibung des Unterkommandos.

WP-CLI aktualisieren

Um WP-CLI zu aktualisieren, kannst du WP-CLI selbst nutzen, indem du

wp cli update

aufrufst. Stelle aber sicher, dass du das wp-Kommando auch schreiben kannst. Wenn du es global als root installiert hast, musst du wp cli update auch als root aufrufen, dann allerdings noch den Parameter --allow-root anhängen. Generell weigert sich WP-CLI nämlich, als root zu laufen.

Um herauszufinden, welche Version du installiert hast, kannst du wp cli version aufrufen. Um zu prüfen, ob ein Update bereitsteht, nutzt du  wp cli check-update.

WordPress installieren

Um WordPress zu installieren, brauchst du

  • eine schon eingerichtete Datenbank (also Datenbankname, Benutzername und Passwort)
  • einen eingerichteten Web-Server, der auf das Verzeichnis zeigt, wo du WordPress installieren willst

Wechsel dazu in das Verzeichnis, wo WordPress installiert werden soll. WordPress kann dann in 3 einfachen Schritten installiert werden (auch einfach zu automatisieren):

1. WordPress herunterladen

Rufe folgenden Befehl auf, um WordPress herunterzuladen:

wp core download

Dies lädt die aktuellste Version von WordPress herunter. Willst Du eine andere Version herunterladen, kannst Du optional noch ein --version=<version> anhängen. <version> ersetzt du dabei durch die gewünschte Version, also z.B. wp core download --version=3.9.1.

Das lädt allerdings die englische Version von WordPress herunter. Willst du stattdessen die deutsche Version nutzen, muss noch der --locale-Parameter angehangen werden:

wp core download --locale=de_DE

Oder im Falle der Sie-Version:

wp core download --locale=de_DE_formal

2. WordPress konfigurieren

Als nächstes muss WordPress konfiguriert werden, also die wp-config.php geschrieben werden. Dazu gibt es den Befehl wp core config.

Diesen rufst du in der Basis-Version wie folgt auf:

wp core config --dbname=wp_database --dbuser=wp --dbpass=securepswd 

Dies konfiguriert die Datenbank mit den angegebenen Werten (die du natürlich ersetzen solltest). Zudem werden automatisch die Salts generiert. Auch wird geprüft, ob die Datenbank mit den angegeben Daten ansprechbar ist.

Ich persönlich würde die weitere Konfiguration mit einem Texteditor vornehmen. Manchmal ist es aber hilfreich, dies auch über ein Kommando erledigen zu können (Stichwort wieder Automatisierung). Dazu kann man weitere Konfigurationsdirektiven über das Flag --extra-php übergeben:

wp core config --dbname=testing --dbuser=wp --dbpass=securepswd --dbprefix=myprefix_ --extra-php <<PHP
define( 'WP_DEBUG', true );
PHP

In diesem Fall setze ich zusätzlich zum Debug-Modus auch noch den Tabellenprefix (immer eine total gute Idee).

3. WordPress-Installation abschliessen

Jetzt haben wir also die Dateien am richtigen Ort und die Konfigurationsdatei geschrieben. Wir könnten jetzt schon auf per Web-Browser auf die Instanz zugreifen und den Installations-Wizard durchlaufen. Müssen wir aber nicht, denn wir können auch dies über die Kommandozeile erledigen:

wp core install --url=example.org \
    --title="Titel der Website" \
    --admin_user=dont_call_me_admin \
    --admin_password=sicheres_passwort_0815_4711 \
    --admin_email=my_email@example.org

Ich denke mal, das die Parameter hier selbsterklärend sind. Wer im übrigen keine Benachrichtigungs-E-Mail erhalten will, kann diese mit --skip-email unterdrücken.

Und damit haben wir eine voll funktionsfähige WordPress-Instanz aufgesetzt. Bislang natürlich ohne spezielles Theme und Plugins. Das kommt daher gleich dran. Vorher noch ein Wort in Sachen Sicherheit.

WordPress aktualisieren

Jeder weiß hoffentlich, wie wichtig es ist, WordPress auf dem aktuellsten Stand zu halten. Dankenswerterweise hilft auch hier WP-CLI. Um WordPress zu aktualisieren, ruft du folgenden Befehl auf:

wp core update

Dies lädt die aktuellste Version herunter und installiert diese. Dies installiert sowohl Unterversionen als auch Hauptversionen. Letztere allerdings will man ggf. vorher testen. Von daher empfiehlt es sich bei einer Automatisierung (z.B. via Cronjob), die Aktualisierungen auf Unterversionen einzuschränken. Dies geht mit

wp core update --minor

Manchmal will man außerdem eine spezielle Version installieren. Dies kannst du mit

wp core update --version=4.4.2

tun. Wenn die Versionsnummer kleiner als die installierte Version ist, musst du zudem --force benutzen, da WP-CLI dich das sonst nicht tun lässt.

Du kannst auch den Namen eines ZIP-Files angeben, wenn Du WordPress schon heruntergeladen hast:

wp core udpate latest.zip

Eventuell muss dann noch die Datenbank aktualisiert werden. Dies kannst du mit folgendem Befehl tun:

wp core update-db

Plugins mit WP-CLI verwalten

Nun also zu den Plugins. Hier kann man mit WP-CLI die komplette Verwaltung vornehmen, also Installation, Aktualisierung, Aktivierung usw. Das ist auch ungemein hilfreich, wenn man nicht mehr ins Web-Backend reinkommt.

Plugins installieren, aktivieren und löschen

Der erste Schritt ist wohl die Installation von Plugins. So kannst du  mit dem Befehl

wp plugin install w3-total-cache

das Plugin W3 Total Cache installieren. Als nächstes kannst du es mit

wp plugin activate w3-total-cache

aktivieren. Oder aber du tust dies in einem Schritt mit

wp plugin install --activate w3-total-cache

Deaktivieren geht entsprechend mit deactivate. Es gibt auch noch toggle, welche diesen Status immer umschaltet, ich finde aber eine explizite Angabe meist sinnvoller.

Bleibt die Frage, welchen Namen man denn beim Plugin angeben muss. Und zwar ist dies der sogenannte slug (hier w3-total-cache). Dies ist der Teil der URL der Plugin-Seite des WordPress-Plugin-Verzeichnisses:

Wie man den Plugin-Slug für WP-CLI findet

Wie man den Plugin-Slug für WP-CLI findet

Du kannst auch Plugins installieren, die nicht im WordPress-Verzeichnis vorhanden sind (z.B. kommerzielle Plugins). Dazu ersetzt du den Plugin-Slug einfach durch den Namen oder die URL eines ZIP-Files:

wp plugin install my-super-commercial-plugin.zip
wp plugin install https://example.org/plugins/my-super-commercial-plugin.zip

Plugins löschen

Löschen kannst du ein Plugin natürlich auch wieder. Das machst du wie folgt:

wp plugin deactivate w3-total-cache
wp plugin uninstall w3-total-cache

Man kann auch das wieder zusammenfassen:

wp plugin uninstall --deactivate w3-total-cache

Alle Plugins deaktivieren

Wenn mal nichts mehr geht, ist eine der Ratschläge, einfach mal alle Plugins zu deaktivieren. Das ist natürlich schwerlich im Web-Interface zu erledigen, wenn nichts mehr geht. Wer WP-CLI hat, ist da klar im Vorteil, denn hier geht es einfach mit

wp plugin deactivate --all

Wie man alle Plugins wieder aktiviert, wird dem Leser als Hausaufgabe überlassen.

Plugins suchen

Nach Plugins suchen kannst du ebenfalls (z.B. um den Slug herauszufinden). Willst du z.B. ein SEO-Plugin installieren, kann der folgende Befehl helfen, das richtige (oder zumindest irgendeins) zu finden:

$ wp plugin search seo
Success: Showing 10 of 1843 plugins.
+-------------------------------+-------------------+--------+
| name                          | slug              | rating |
+-------------------------------+-------------------+--------+
| SEO                           | seo-wizard        | 76     |
| SEO Ultimate                  | seo-ultimate      | 78     |
| WordPress SEO Comments Plugin | blog-comments-seo | 88     |
| Link to us - SEO Widget       | link-to-us        | 100    |
| SEO by SQUIRRLY™        | squirrly-seo      | 90     |
| WP Meta SEO                   | wp-meta-seo       | 90     |
| SEO Post Content Links        | content-links     | 98     |
| SEO Plugin LiveOptim          | liveoptim         | 88     |
| Yoast SEO                     | wordpress-seo     | 80     |
| The SEO Framework             | autodescription   | 100    |
+-------------------------------+-------------------+--------+

Um die nächsten 10 Einträge einzusehen, kannst du die Option –page=2 nutzen. Du kannst die Anzahl der Ergebnisse pro Seite mit Hilfe von --per-page=50 ändern.

Weiterhin kannst du die angezeigten Felder mit Hilfe des --fields-Parameters bestimmen. Gebe wp help plugin search ein, um eine komplette Liste der Felder zu erhalten.

Wenn du dieses Kommando in einem Script verwendest, willst du vielleicht auch ein anderes Ausgabeformat wählen. Dies kannst du mit --format tun, wobei man zwischen table, csv, json, count und yaml wählen kann. Sortieren (z.B. nach Rating) geht aber leider nicht.

Hier ein weiteres Beispiel:

 $ wp plugin search seo --format=csv --per-page=2 --fields=name,slug,tested
 Success: Showing 2 of 1843 plugins.
 name,slug,tested
 SEO,seo-wizard,4.5.1
 "SEO Ultimate",seo-ultimate,4.3.3

Beachte, dass hier noch eine Zeile mit Success angezeigt wird, was bei der Nutzung in einem Script vielleicht stören könnte. Willst du solche Meldungen unterbinden, musst du noch --quiet als Parameter anhängen. Gerade in Scripts macht diese Funktion wohl auch am ehesten noch Sinn, denn ansonsten sind Plugins wohl einfacher über das Web zu finden.

Plugins auflisten

Um herauszufinden, welche Plugins überhaupt installiert sind, kannst Du wp plugin list aufrufen:

$ wp plugin list
+-------------------------------------+----------+-----------+----------+
| name                                | status   | update    | version  |
+-------------------------------------+----------+-----------+----------+
| above-the-fold-optimization         | inactive | none      | 2.3.14   |
| advanced-custom-fields              | active   | none      | 4.4.7    |
| amp                                 | active   | none      | 0.3.2    |
| antispam-bee                        | active   | none      | 2.6.8    |
...

Plugins aktualisieren

Eine sehr hilfreiche Funktion von WP-CLI ist es, Plugins per Script aktualisieren zu können. Dies hat den Vorteil, dass die WordPress-Dateien einen anderen Besitzer als den Web-Server haben können. Somit kann ein Angreifer diese auch nicht ändern. wenn er „nur“ Zugriff auf das Web-Interface hat.

Zunächst aber will man wahrscheinlich den Status seiner Plugins erfahren. Dazu rufst du folgendes auf:

$ wp plugin status
5 installed plugins:
  I above-the-fold-optimization         2.3.14
  A advanced-custom-fields              4.4.7
  A amp                                 0.3.2
  A antispam-bee                        2.6.8
 UA fb-instant-articles                 2.9
...

Anhand der ersten Spalte siehst du dann, dass above-the-fold-optimization nur installiert, aber nicht aktiviert ist, die drei nächsten auch aktiviert sind und fb-instant-articles ein Update braucht.

Dieses kannst du dann mit

wp plugin update fb-instant-articles

installieren. Willst du auf eine spezifische Version aktulisieren, kannst du das mit --version=1.2.3 tun.

Du kannst auch alle zu aktualisierenden Plugins auf einmal aktualisieren:

wp plugin update --all

Themes verwalten

Wenn alle Plugins bereit sind, braucht es noch ein Theme. Ich gehe hier zunächst davon aus, dass ein bestehendes Theme installiert werden soll. Dies funktioniert ähnlich wie bei Plugins.

Theme installieren

So installierst Du ein Theme mit

wp theme install <theme>

<theme> kann dabei sein:

Du kannst das Theme dabei direkt mit --activate aktivieren oder das separat tun:

wp theme activate clean-journal

Themes aktualisieren, suchen, auflisten

Ähnlich wie bei Plugins kannst Du auch Themes aktualisieren. Dies geschieht mit

wp theme update <theme>

wobei man auch hier --all und --version wie bei den Plugins angeben kann.

Dasselbe gilt für die Kommandos list und status. Auch die entsprechen den oben beschriebenen Plugin-Kommandos.

Permalinks konfigurieren

Die Permalinks können ebenfalls mit WP-CLI verwaltet werden. Dies geht mit dem wp rewrite-Kommando. Will man die Permalink-Struktur auf /2016/04/postname ändern, so geht dies mit

wp rewrite structure '/%year%/%monthnum%/%postname%'

Dabei kannst Du auch die Kategorie- und Schlagwort-Basis setzen (wie in den Permalink-Einstellungen):

wp rewrite structure --category_base '/kat/' --tag-base '/stichwort/' '/%year%/%monthnum%/%postname%'

Die Rewrite-Rules können dann mit wp rewrite flush aktualisiert oder mit wp rewrite list aufgelistet werden.

Benutzer verwalten

Kommen wir zur Benutzerverwaltung. Will man einen neuen Autor mit Benutzername klaus und E-Mail-Adresse klaus@comlounge.net anlegen, so ruft man Folgendes auf:

wp user create klaus klaus@comlounge.net --role=author

Gibt man keine Rolle an, wird die Default-Rolle genutzt (normalerweise wohl subscriber). Weitere Parameter sind:

  • --user_pass=<pass> übergibt ein Passwort für den neuen Nutzer
  • --display_name=<anzeigename> definiert den Anzeigenamen
  • --first_name=<vorname> speichert den Vornamen
  • --last_name=<nachname> entsprechend den Nachnamen
  • --send_email gibt an, ob eine Mail an den neuen Benutzer gesendet werden soll oder nicht
  • --porcelain gibt nur die Benutzer-ID zurück, sinnvoll bei einer Automatisierung

Benutzer wieder löschen geht mit

wp user delete klaus

Will man dabei die Artikel des Benutzers an einen anderen Benutzer „übergeben“, so geht dies mit --reassign=<user_id>.

Dazu braucht man natürlich die ID, die man mit Hilfe der Benutzerliste herausbekommt:

wp user list

Auch hier gibt es wieder viele hilfreiche Parameter, wie z.B.

  • --role=<rolle> zeigt nur die Benutzer mit der angegebenen Rolle an
  • --format=<format> definiert das Ausgabeformat (table, csv, json, count, yaml)

Datenbank verwalten

Wenn es um die Datenbank geht, ist ja zunächst mal ein Export (z.B. für ein Backup interessant). Das geht mit

wp db export

Praktischerweise muss man hier keinen Benutzernamen und Passwort angeben, da dies ja schon in der wp-config.php konfiguriert ist. Nach Ausführung des Kommandos liegt eine SQL-Datei mit dem Namen <dbname>.sql im aktuellen Verzeichnis. Willst du sie an einen anderen Ort exportieren, kannst du den Pfad dorthin angeben:

wp db export /tmp/export.sql

Das Importieren der Datenbank ist dann ebenfalls recht einfach möglich:

wp db import /tmp/import.sql

Praktisch ist manchmal auch, einfach einen Datenbank-Prompt zu haben. Dies geht ganz einfach mit

wp db cli

Weitere Kommandos können die Datenbank optimieren, reparieren usw. Weiteres findest du mit Hilfe von wp help db heraus.

Kommentarverwaltung mit WP-CLI

Spätestens, wenn sich Tausende bis Milliarden von Spam-Kommentaren angesammelt haben, wünscht man sich einen Weg, diese relativ flott löschen zu können. Das Web-Backend ist dabei nur leider alles andere als flott und kann das Lösch-Glück ggf. mit einem Timeout ins Gehege kommen. Abhilfe schafft auch hier wieder WP-CLI:

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

Hier arbeiten sogar 2 Kommandos zusammen: Mit wp comment list werden alle Kommentare angezeigt, die den Status spam haben. Der Parameter --format=ids definiert, dass nur die IDs ausgegeben werden. Diese werden dann von wp comment delete als Eingabe genutzt.

Für die normale Kommentar-Moderation ist die Kommandozeile wahrscheinlich eher schlecht geeignet, für Batch-Operationen wie oben bietet sie sich aber definitiv an. Gerade wegen der Timeouts.

Suchen und Ersetzen

Wer schon einmal eine WordPress-Instanz umziehen musste, wird sich darüber gefreut haben, dass das Meiste an Konfiguration in der Datenbank und nicht etwa in Konfigurationsdateien abgelegt wird. Will man also die URL der Site ändern, ist das nicht so einfach möglich und mit vielen Plugins dennoch oftmals manuelle Arbeit.

Einfacher ist da mal wieder die Kommandozeile. Bei WP-CLI gibt es daher das passende Kommando:

wp search-replace live.example.org dev.example.org

In diesem Beispiel werden alle Vorkommen von live.example.org durch dev.example.org ersetzt. WP-CLI handhabt dabei ebenfalls von PHP serialisierte Daten.

Wer dem Suchen und Ersetzen erstmal nicht so traut, der kann sich mit Hilfe von --dry-run ausgeben lassen, wie viele Vorkommnisse in welcher Tabelle denn geändert werden würden:

$ wp search-replace live.example.org dev.example.org
+------------------+-----------------------+--------------+------+
| Table            | Column                | Replacements | Type |
+------------------+-----------------------+--------------+------+
| wp_options       | option_name           | 1            | SQL  |
| wp_options       | option_value          | 15           | PHP  |
| wp_users         | user_email            | 4            | SQL  |
+------------------+-----------------------+--------------+------+

In dieser Ausgabe sieht man jetzt z.B., dass der Such-String auch in E-Mail-Adressen vorkommt. Diese will man wahrscheinlich nicht ändern und zum Glück kann man das search-replace dabei auf bestimmte Tabellen (wie wp_options) einschränken. Dazu gibt man einfach die gewünschten Tabellen noch am Ende an:

wp search-replace live.example.org dev.example.org wp_options wp_irgendwas ...

Allerdings muss man sich dazu schon ein bisschen auskennen oder sollte zumindest noch einmal sicherstellen, dass man ein Backup hat (das macht ihr doch eh immer, oder?). Ansonsten ist ein wp db export ja schnell gemacht.

Multisite 

Bei einer Multisite ist natürlich noch mehr zu beachten, z.B. dass man das Suchen und Ersetzen auf den richtigen Sites durchführt. WP-CLI arbeitet daher zunächst auf der Standard-Site oder der durch den --url-Parameter angegeben Site. Mit Hilfe von --network kannst du das Suchen und Ersetzen aber auf allen Sites gleichzeitig durchführen.

Plugins und Erweiterungen für WP-CLI

WP-CLI beinhaltet schon recht viele Kommandos. Mehr ist aber immer besser und daher kann WP-CLI mit Hilfe von Plugins erweitert werden. Mehr noch: Manche Plugins, wie W3 Total Cache haben schon Support für WP-CLI eingebaut. Hast du also W3 Total Cache und WP-CLI installiert, kannst Du mit

wp total-cache flush

den Cache von der Kommandozeile aus leeren. Die Liste aller Kommandos erhält man dabei wie beschrieben mit wp help.

Wenn du wissen willst, welche andere Plugins WP-CLI-Unterstützung haben oder welche gar nur neue Befehle bereitstellen, dann kannst du das im Tool-Verzeichnis nachsehen.

Packages

Es gibt aber nicht nur Plugins, sondern auch noch sogenannte Packages. Diese sind im Gegensatz zu Plugins nur in WP-CLI aktiv. Sie werden daher vom Web-Frontend gar nicht erst geladen und sind auch nicht von WordPress selbst abhängig. D.h. sie können auch ausgeführt werden, wenn WordPress noch gar nicht aktiv oder defekt ist.

Eine Liste der verfügbaren Packages gibt es im Package-Index oder über die Kommandozeile selbst:

wp package browse

Installiert wird ein Package wie folgt:

wp package <package_name>

Ein Beispiel wäre:

wp package install petenelson/wp-cli-size

Danach gibt es dann ein neues Kommando namens wp size:

wp size database

 

Artikel-Revisionen verwalten

Ähnlich wie zu viele Spam-Kommentare in der Datenbank können auch zu viele Artikel-Revisionen WordPress ausbremsen. Doch wie löscht man die nicht mehr benötigten Revisionen alle auf einmal? Hier kommt das Plugin wp-revisions-cli zum Einsatz. Ein Problem nur: Es existiert nur als Source-Code-Repository auf github und nicht im WordPress-Plugin-Verzeichnis.

Was also tun?

Wie oben beschrieben, kann man Plugins auch aus einem ZIP-File installieren. Weiterhin muss diese Datei gar nicht lokal vorliegen, sondern kann auch per URL referenziert werden. Die URL bekommt man dabei von github, denn dort wird das Repository auch als ZIP-Datei bereitgestellt:

Download-Link zum WP-Revisions-Plugin

Download-Link zum WP-Revisions-Plugin

Mit einem Rechtsklick kann man dann die URL des Links kopieren und dann das Plugin damit installieren:

wp plugin install --activate https://github.com/trepmal/wp-revisions-cli/archive/master.zip

Dies installiert und aktiviert das Revisions-Plugin. In WordPress selbst sieht man außer dem Plugin in der Plugin-Liste nichts davon, denn es stellt nur ein WP-CLI-Kommando bereit.

Nun, da das Plugin installiert ist, kann du mit wp help revisions die vom Plugin bereitgestellten Unterkommandos ansehen.

Revisionen ansehen

Alle gespeicherten Revisionen kannst du mit

wp revisions list

auflisten lassen. Das sind wahrscheinlich recht viele, so du die maximale Anzahl von anzulegenden Revisionen nicht in wp-config.php eingeschränkt hast (das kannst du z.B. mit wp revisions status prüfen). Mit Hilfe von --post_id= und --post_type= kannst du die Liste aber entsprechend auf einen Artikel oder einen Artikeltyp einschränken.

Revisionen löschen

Eigentlich wollten wir Revisionen aber ja löschen. Hier gibt es gleich zwei Kommandos: clean und dump.

Der Unterschied zwischen den Kommandos ist, dass dump einfach alle Revisionen komplett löscht, während man bei clean mehr Kontrolle hat. Mit wp revisions dump sind also einfach alle Revisionen weg.

Will man aber noch 5 Revisionen behalten und nur alle älteren löschen, dann kann man das mit

wp revisions clean 5

tun. Optional kann man auch wieder die oben schon beschriebenen Parameter --post_id und --post_type angeben, um nur einen Artikel oder einen Artikel-Typ zu behandeln.

 

Es gibt noch viel mehr…

Obwohl der Artikel schon recht lang ist, gibt es in WP-CLI natürlich noch viel mehr. Ich werde den Artikel also ggf. noch erweitern. Wer selbst noch ein bisschen stöbern will, kann dies aber natürlich mit wp help tun.

Und wenn ihr WP-CLI schon nutzt, wäre ich an interessanten Anwendungsfällen in den Kommentaren sehr interessiert.