Mit dem mächtigen Kommandozeilentool wp-cli kannst Du nach etwas Einarbeitung mit wenigen Klicks Eure lokalen (aber auch Deine Live-)WordPress-Seiten verwalten. Wenn Du bisher noch keine Berührung mit der Kommandozeile hattest: wp-cli gibt Dir definitiv einen sehr guten Grund, Dich mit dem Terminal am Mac zu beschäftigen :) Der Vorteil von wp-cli: die Verwaltung benötigt nur das Terminal und nicht den Browser – Du brauchst also nicht im Backend zu sein, um beispielsweise Plugins zu installieren, zu aktivieren oder zu deaktivieren. Das spart nicht nur Zeit, weil Plugins zeitgleich mit der Installation direkt aktiviert werden können, Du kannst auch ganze Listen mit Deinen Standardplugins anlegen, die in einem Rutsch installiert und aktiviert werden können.
Der Befehl wp plugin list
etwa – wer hätte das gedacht ;-) – gibt in Eurer Shell eine Liste mit den installierten Plugins aus.
Der Befehl wp plugin list
etwa – wer hätte das gedacht ;-) – gibt in Eurer Shell eine Liste mit den installierten Plugins aus.
Nun habe ich bei meinen WordPress-Seiten schon mal 20 und mehr Plugins installiert – und nicht alle sind aktiv. Z.B. ein Maintenance-Plugin oder der Duplicator. Wenn ich zwischendurch mal alle Plugins deaktivieren will, geht das ganz schnell und einfach mit wp plugins deactivate --all
. Nur: wie bekomme später ich genau dasselbe Set an Plugins wieder aktiviert, das vorher aktiv war?
Dafür habe ich ein Skript für die Shell zusammengestoppelt, das eine Liste der aktivierten Plugins in eine Textdatei »plugins-active.txt« schreibt. Zum Aktivieren dieser Plugin brauche ich dann nur im Terminal wp plugin activate
eingeben und den Inhalt von »plugins-active.txt« ans Ende dieser Eingabe kopieren und Enter drücken. Fertig: alle zuvor aktiven Plugins sind jetzt erneut aktiviert!
Hier der komplette Einzeiler:wp plugin list | grep -w active | awk '{print $1;}' | tr '\n' ' ' > plugins-active.txt
Lasst Euch nicht vom Umfang des Tutorials abschrecken: in der zweiten Hälfte (ab Schritt 10) erkläre ich die Skriptbestandteile im Detail, der reine Praxisteil geht von Schritt 1 – 9.
1. wp-cli: Vorbereitung
Nachdem Ihr eine neue Shell im Terminal gestartet habt, könnt Ihr aus dem Finder das Verzeichnis, mit dem Ihr arbeiten wollt, auf das Terminalfenster im Dock ziehen. Ich habe mir unter MAMP Pro eine WordPress-Installation »wp-cli-tutorial« angelegt. Den kompletten Pfad seht Ihr im Screenshot am unteren Fensterrand: [Mein-Rechner] > Programme > MAMP > htdocs > wp-cli-tutorial
2. Wo bin ich?
Im Terminal ist man immer irgendwo auf seiner Festplatte. Die Bash-Shell zeigt einem nur nicht, wo.
3. Ich bin tatsächlich im richtigen Verzeichnis ;-)
Also eben pwd
eingeben und mit der Enter-Taste bestätigen: pwd steht für »print working directory«. Und damit zeigt Euch die Shell an, wo Ihr Euch gerade mit Eurem Terminal befindet.
Yep – alles klar: bin im richtigen Verzeichnis.
4. Skript laufen lassen
Durch die im wahrsten Sinn des Wortes Befehlskette wp plugin list | grep -w active | awk '{print $1;}' | tr '\n' ' ' > plugins-active.txt
wird im aktuellen Verzeichnis die Textdatei »plugins-active.txt« mit einer Liste der aktiven Plugins angelegt.
5. Die Datei »plugins-active.txt« ist angelegt worden
Das Skript hat im aktiven Verzeichnig »wp-cli-tutorial« die Datei »plugins-active.txt« mit den aktiven Plugins angelegt.
6. Mit wp-cli alle Plugins deaktivieren
Der Befehl »wp plugin deactivate –all« macht genau das: nach Bestätigung mit Enter werden alle aktiven Plugins deaktiviert.
7. wp-cli ist schnell, wirklich schnell
Einen Moment nach Ausführung des Befehls zum Deaktivieren sind alle Plugins deaktiviert.
Jetzt könnt Ihr Tests an Eurer pluginlosen Installation machen.
8. Die vorher deaktivierten Plugins wieder aktivieren
Wenn Ihr dasselbe Set an Plugins wieder aktivieren wollt: schreibt als nächsten Befehl wp plugin activate
. Dann kopiert Ihr Euch aus der Datei »plugins-active.txt« die Liste mit den ursprünglich aktiven Plugins und fügt sie hinter »wp plugin activate« ein. Mit Enter bestätigen.
9. Die zuvor deaktivierten Plugins sind wieder aktiv
Genauso schnell, wie wp-cli Plugins deaktiviert, werden Plugins auch wieder aktiviert. Fertig.
Mit diesem Befehl und einer entsprechend vorbereiteten Textdatei lassen sich auch bei der Neuinstallation von WordPress auch ganze Plugin-Sets auf einen Schwung installieren.
Wer sich für die einzelnen Bestandteile des Skripts wp plugin list | grep -w active | awk '{print $1;}' | tr '\n' ' ' > plugins-active.txt
interessiert: hier folgt die Erklärung.
10. Erklärung zu den Einzelschritten: der erste Skriptteil »wp plugin list«
Wenig überraschend: wp-cli listet durch diesen Befehl alle Plugins auf.
11. Cool: eine Tabelle mit einer Menge Infos zu den Plugins
Hier würden auch erhältliche Update der betreffenden Plugins angezeigt werden.
12. Der zweite Skriptteil: »grep -w active«
Mit der Pipe |
habe ich den nächsten Bestandteil angehängt: grep -w active
. Dadurch wird vom Programm grep die Ausgabe vom vorigen Schritt (»wp plugin list«) auf die Zeichenfolge active
durchsucht. Die Option -w
sorgt dafür, dass die Wortgrenzen eingehalten werden. Dadurch übergeht grep die Zeilen mit »inactive« und gibt nur die Zeilen aus, in denen wirklich »active« gefunden wird. Das bestätigt die Ausgabe:
13. Die Ausgabe von »grep -w active«
14. Der dritte Skriptteil: »awk ‚{print $1;}’«
Der nächste Befehl wird wie vorher mit einer Pipe angehängt. awk '{print $1;}'
startet das Programm awk. Der Befehl '{print $1;}'
sorgt dafür, dass wie in einer Tabelle nur die erste Spalte ausgegeben wird.
15. Die Ausgabe von » awk ‚{print $1;}’«
Das sieht schon gut aus, aber zwei Schritte fehlen noch. 1.: die Zeilenumbrüche sollen weg und 2. brauchen wir das Endergebnis in einer Textdatei.
16. Der vierte Skriptteil: »tr ‚\n‘ ‚ ‚«
»tr« steht für »translate« und »übersetzt« Zeichen durch andere. In meinem Fall habe ich mit \n
die Zeilenumbrüche durch ein Leerzeichen
ersetzt.
17. Zeilenumbrüche löschen
Durch die Löschung der Zeilenumbrüche stehen die Pluginbezeichnungen in einer Zeile.
18. Die Ausgabe in eine Textdatei
Jetzt fehlt nur noch die Ausgabe in eine Textdatei. Und dafür sorgt das > active-plugins.txt
: die Ausgabe der vorigen Befehle wird durch das >
nicht mehr auf dem Bildschirm ausgegeben, sondern in eine Textdatei quasi umgelenkt.
Alles klar? ;-)
PS: Mir scheint der Gebrauch von grep und(!) awk nicht besonders elegant zu sein, ich habe aber keine kürzere andere Lösung gefunden. Wie würdet Ihr es machen? Freue mich wie immer über Kommentare!
Hallo Karsten,
ich bin auch immer wieder begeister, wie sehr sich die Arbeit mit WP-CLI automatisieren lässt.
Allerdings bietet WP-CLI auch noch Optionen an, mit denen du eine Liste der aktivierten Plugins bequemer erstellen kannst:
wp plugin list –field=name –status=active > plugins-activate.txt
Viele Grüße, Bego
Hallo Bego!
Ich habe mir gedacht, dass mein Anliegen einfacher zu lösen sein muss! Deine Lösung kannte ich nicht – vielen Dank!
Immerhin habe ich durch meinen Ansatz sehr viel über die Arbeit mit dem Terminal gelernt ;-) Und auch darüber, wie ich einen Beitrag, den ich in Markdown verfasst habe, möglichst zeitsparend nach WordPress rüber heben kann :)
Viele Grüße
Karsten
Hallo Karsten,
meine Antwort war auch bitte nur als Ergänzung gemeint. Es gibt viele Wege, die nach Rom führen und Du hast so anschaulich deinen Lösungsweg beschrieben, dass er sicher für viele eine Inspiration ist, sich mehr mit der Kommandzeile und WP-CLI zu beschäftigen. Alleine dafür verdienst du ein herzliches Dankeschön.
Viele Grüße, Bego
Hallo Bego!
:) Vielen Dank für Deine Rückmeldung!
Viele Grüße
Karsten
Servus. Ich lass einfach Mal
wp option get active_plugins
hier liegen 😉
Der Vorteil ist, dass die Aktivierungsreihenfolge dort enthalten ist. Das wegschreiben und mit „set option“ wiederherstellen.
Never change a running system ☝️
Hallo Mike!
Danke für den Tipp! Werde ich mir anschauen!
Viele Grüße
Karsten