Die meiste Zeit seiner Lebensdauer wurde WordPress mit einer einfachen Code-Basis aufgebaut, wobei ein Hauch von objektorientiertem PHP das abstrakteste System bildet. In den letzten Jahren hat sich dies jedoch zum Besseren verändert. Von Unit-Tests bis hin zur CSS-Vorverarbeitung und Befehlszeilen-Tools tauchen immer mehr entwicklerfreundliche Ressourcen auf. In diesem Artikel werden wir uns einen meiner Favoriten ansehen: WP-CLI.
Was ist WP-CLI?
WP-CLI ist ein Kommandozeilen-Tool für Entwickler zur Verwaltung der üblichen (und nicht so üblichen) Aufgaben einer WordPress-Installation. Es kann Benutzer hinzufügen/entfernen, Beiträge, Kategorien, Testdaten einfügen, in der Datenbank suchen und ersetzen, Passwörter zurücksetzen, bei der Behebung von Leistungsproblemen helfen und vieles mehr!
WP-CLI ist seit über einem Jahrzehnt ein Open-Source-Projekt, das seit 2003 hauptsächlich von Daniel Bachhuber betreut wird. Das Hauptziel von WP-CLI ist es, die Arbeitsabläufe von WordPress-Entwicklern zu beschleunigen.
Im Laufe der Jahre hat sich das Projekt zu so viel mehr entwickelt! Es wird jetzt sogar zu einer Voraussetzung für andere Open-Source-Projekte wie Trellis und Bedrock. Seit Januar 2017 ist WP-CLI offiziell zu WordPress.org umgezogen und wird nun auch von Alain Schlesser mitbetreut.
WP-CLI v2 wurde am 8. August 2018 veröffentlicht, daher werden wir auch einige der Änderungen und neuen Funktionen untersuchen. Wenn du ein Kinsta-Kunde bist, ist WP-CLI v2.0.1 standardmäßig auf allen unseren Servern installiert, einfach SSH in den Server, um zu beginnen. Der SSH-Zugang ist in allen unseren Hosting-Paketen enthalten (Keine Verbindung über SSH herstellen? Erfahren Sie, wie Sie den SSH-Fehler „Connection Refused“ beheben können).
- WP-CLI erhalten
- Die Grundlagen von WP-CLI
- WP-CLI-Befehle im Allgemeinen
- Nützliche Beispiele
- WP-CLI aus der Ferne verwenden
- Verwendung von Bash-Skripten
WP-CLI erhalten
Die PHP-Mindestanforderung für WP-CLI v2.0.0 wurde auf PHP 5.4 angehoben. Obwohl dies ein guter Schritt ist, empfehlen wir, dass zumindest eine unterstützte Version von PHP, d.h. 5.6 oder höher, eingesetzt wird. PHP 7.2 ist sowohl aus Sicherheits- als auch aus Leistungsgründen bei allen Kinsta-Installationen die Standardversion. Wir haben auch PHP 7.3 und 7.4 verfügbar.
Um zu beginnen, muss WP-CLI installiert werden – ein sehr einfacher Prozess. Die Schritte für Linux und OSX sind die folgenden, führe diese drei Befehle nacheinander aus:
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp
Wenn etwas schief geht oder du mit Windows arbeitest, lies die grundlegenden Anweisungen oder die alternativen Installationsmethoden dir durch.
Wenn du damit fertig bist, solltest du in der Lage sein, den Befehl wp --info
auszuführen und eine sinnvolle Antwort zu erhalten.
Der Prozess ist derselbe, wenn du WP-CLI auf deinem Server installieren willst. Denke daran, dass für Kinsta-Kunden WP-CLI bereits installiert ist. Du bist dir nicht sicher, welche Version du derzeit verwendest? Du kannst jederzeit den Befehl wp cli version
erteilen, um dies herauszufinden.
Die Grundlagen von WP-CLI
Der Zugriff auf WordPress von der Befehlszeile aus ist an sich schon leistungsstark, kann aber bei der Verwendung von Bash-Skripten noch mehr Kontrolle und Geschwindigkeitsgewinne bringen.
Bash-Skripte ermöglichen es einem, eine Reihe von Befehlen mit einem einzigen Befehl auszuführen. Du kannst die Datei bash install-and-setup.sh
eingeben und erhältst folgendes Ergebnis:
- WordPress herunterladen
- Erstellen und Ausfüllen von
wp-config.php
- Erstelle die Datenbank
- WordPress installieren
- Installiere und aktiviere alle benötigten Plugins
- Installiere und Aktiviere ein Theme
- Herunterladen und Hinzufügen von Test-Inhalten
Dies wären die Schritte, die ich unternehmen würde, um eine neue Testumgebung für ein Projekt zu schaffen. Normalerweise würde ich dafür mindestens 5-10 Minuten benötigen, besonders wenn es sich um ein paar Plugins handelt. Das Ausführen eines einzigen Befehls ist natürlich viel schneller.
WP-CLI-Befehle im Allgemeinen
Wenn du es gewohnt bist, im Terminal zu arbeiten, ist WP-CLI für dich nichts Besonderes. Befehle beginnen immer mit wp
, gefolgt von einem Befehl und einem Unterbefehl, gefolgt von erforderlichen und optionalen Parametern, etwa so:
wp command subcommand requiredparam --optionalparam --optionalparam2=value
Installiere ein Theme, um zu sehen, wie das mit einem echten Befehl funktioniert:
wp theme install twentyseventeen --activate
Dadurch wird das Twenty Seventeen Theme auf deiner WordPress-Installation installiert und aktiviert.
Beachte, dass WP-CLI mit der WordPress-Installation, die du gerade im Terminal hast, funktioniert. Wenn du die Verzeichnisse wechselst, um zu einer anderen WordPress-Installation zu gelangen, wird es mit dieser funktionieren.
Nützliche Beispiele
Das war WP-CLI in Kürze! Es gibt zwar ein paar fortgeschrittene Dinge, die man tun kann, zu denen wir gleich kommen werden, aber man weiß schon genug, um anzufangen und zu tun, was immer man tun muss. Ich empfehle, einen Blick auf die Befehlsliste zu werfen und einige davon auszuprobieren. Wir werden uns hier einige nützliche Dinge ansehen und dann zur Verwendung von WP-CLI über SSH und zur Verwendung von Bash-Skripten übergehen.
Installation von WordPress
Ich benutze WP-CLI sehr oft, um Testumgebungen einzurichten, deren erster Schritt eine Vanilla-Installation ist. Hier ist eine Liste von Befehlen, die ich ausführe:
wp core download
wp core config --dbname=mydbname --dbuser=mydbuser --dbpass=mydbpass --dbhost=localhost --dbprefix=whebfubwef_ --extra-php <<PHP
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
PHP
wp db create
wp core install --url=http://siteurl.com --title=SiteTitle --admin_user=username --admin_password=mypassword [email protected]
Beachte, wie cool das ist! Die aktuellste Version von WordPress wird mit dem ersten Befehl heruntergeladen. Mit dem zweiten Befehl wird die Konfigurationsdatei mit dem Datenbankzugriff und etwas zusätzlichem PHP am Ende eingerichtet. Die zusätzlichen Konstanten stellen sicher, dass wir unsere Debugging-Optionen zum Testen eingeschaltet haben. Wir haben hier einen detaillierten Leitfaden, wenn Sie mehr über das Debugging von WordPress erfahren möchten.
Der dritte Befehl erstellt die Datenbank (WP-CLI verwendet die Datenbank-Zugriffsinformationen aus der Konfigurationsdatei) und schließlich installieren wir WordPress mit Hilfe einiger Parameter.
WordPress-Core neu installieren
Du kannst auch den WordPress-Core mit WP-CLI neu installieren. Der folgende Befehl würde den WordPress-Kern ohne die Standard-Themes und Plugins herunterladen.
wp core download --skip-content --force
WordPress-URL ändern
Es gibt viele Gründe, warum du deine WordPress-URL ändern musst oder willst. Vielleicht änderst du die Domain, wechselst zu einer Subdomain, aktualisierst von www zu nicht-www, verschiebst Dateien oder migrierst sogar von HTTP zu HTTPS. Was auch immer der Fall sein mag, du kannst dafür einfach den Befehl wp option update
verwenden. Hier ist ein Beispiel unten:
wp option update home 'http://example.com' wp option update siteurl 'http://example.com'
Liste der aktuellen Plugins mit Details
Um eine Liste der aktuell auf einer Webseite installierten Plugins zu erhalten, verwende einfach den folgenden Befehl. In diesem Beispiel siehst du, dass wir das SEO-Plugin Schema und Yoast installiert haben. Es gibt auch den Status (aktiv/deaktiviert) zurück, wenn ein Update verfügbar ist, sowie die aktuelle Version.
wp plugin list
Installieren mehrerer Plugins
Um mehrere Plugins zu installieren, kann man einfach Parameter anhäufen. Hier ist ein Beispiel, das 3 Plugins herunterlädt und aktiviert:
wp plugin install advanced-custom-fields jetpack ninja-forms --activate
Beachte, dass die Plugin-Namen von den Namen im Repository stammen. Der einfachste Weg, dies herauszufinden, ist, deine Seite zu besuchen und die URL zu betrachten oder den wp plugin search searchterm
zu verwenden, der dir eine Liste im Terminal liefert.
Bei Bedarf kann man auch ältere Versionen von WordPress-Plugins mit dem --version
-Attribut installieren.
wp plugin install wordpress-seo --version=4.8 --activate
Noch cooler ist es, dass du Plugins aus Remote Dateien installieren kannst, nicht nur aus dem Repository, was praktisch ist, wenn du ein Plugin entwickeln oder ein Premium-Plugin verwendest. Der folgende Befehl installiert zwei Plugins aus dem Repository und eines von einem Amazon S3-Server.
wp plugin install advanced-custom-fields jetpack https://d1qas1txbec8n.cloudfront.net/wp-content/uploads/2015/06/23073607/myplugin.zip --activate
Deaktiviere mehrere Plugins
Um ein einzelnes Plugin zu deaktivieren, kannst du den folgenden Befehl ausführen.
wp plugin deactivate wordpress-seo
Um alle deine Plugins auf einmal zu deaktivieren, führe den folgenden Befehl aus.
wp plugin deactivate --all
Dieser obige Befehl kann nützlich sein, wenn du Kompatibilitätsprobleme beheben und einfach alle Plugins auf einen Schlag deaktivieren willst. Du kannst dann zurückgehen und eines nach dem anderen aktivieren, wobei du sie nach und nach testen kannst.
Plugins aktualisieren
Du kannst WordPress-Plugins auch manuell aktualisieren. Beispiel unten:
wp plugin update wordpress-seo
Datenbank Suchen und Ersetzen
Einer der Hauptgründe, warum es schwierig ist, eine Webseite durch einfaches Kopieren und Einfügen einer Datenbank zu migrieren, ist, dass die Datenbank serialisierte Arrays enthält. Wenn man alle Instanzen von http://testsite.com
durch http://livewebsite.com
ersetzen muss, machen die serialisierten Arrays keinen Sinn, weil die Anzahl der Zeichenfolgen nicht übereinstimmt.
Der Befehl search-replace
führt zuerst die Unserialisierung von Arrays durch, dann das Suchen und Ersetzen und dann die Neuserialisierung der Arrays. Man kann das mit einem einfachen Befehl bewerkstelligen:
wp search-replace oldstring newstring
Zusätzliche Parameter erlauben dir viel mehr, einschließlich der Vorschau, was durch die Verwendung von --dry-run
ersetzt wird.
Import und Export
Es gibt zwei Möglichkeiten, Inhalte mit WP-CLI zu exportieren. Du kannst eine XML-Datei erstellen, wie es das WordPress-Exportwerkzeug tut, oder du kannst die Rohdatenbank exportieren/importieren. Ich finde das letztere viel nützlicher in meiner täglichen Routine, es kommt mir beim Synchronisieren von Webseiten sehr gelegen.
wp db export
ist alles, was man tun muss, um eine SQL-Datei zu erstellen, und wp db import file.sql
ist alles, was man zum Importieren braucht. Funktioniert wie ein Zauber, man sollte nur darauf achten, nichts zu überschreiben, denn beim Importieren wird im Grunde die vorhandene Datenbank gelöscht und stattdessen die mitgelieferte SQL-Datei verwendet.
Add, Update, Delete Users
You can add, update, and delete users with WP-CLI.
# List user IDs
$ wp user list --field=ID
1
# Create a new user.
$ wp user create john [email protected] --role=author
Success: Created user 3.
Password: HOh897%*(&^R8
# Update an existing user.
$ wp user update 123 --display_name=Beth --user_pass=bethpass
Success: Updated user 123.
# Delete user 123 and reassign posts to user 443
$ wp user delete 123 --reassign=443
Success: Removed user 123 from http://example.com
Rollen und Funktionen verwalten
WP-CLI kann mit dem wp-role
ziemlich einfach Rollen für dich verwalten. Das ist ziemlich cool, wenn man testen möchte, wie ein Plugin mit benutzerdefinierten Rollen funktioniert, aber die Rollen nicht wirklich innerhalb des Plugins erstellt.
wp role create organizer Organizer
wp cap list 'editor' | xargs wp cap add 'organizer'
wp cap add 'organizer' 'manage-events'
Die obigen Befehle erstellen eine neue Rolle (Organizer), fügen alle Fähigkeiten der Editor-Rolle hinzu und fügen dann eine neue Fähigkeit hinzu: manage-events. Mit den richtigen Befehlen kannst du WP-CLI nutzen, um dein WordPress-Passwort zu ändern.
Testdaten erzeugen
Ich liebe alle Arten von Fake-ähnlichen Funktionen – solche, die deiner Webseite Dummy-Inhalte hinzufügen, die du für Tests verwenden kannst. WP-CLI hat ein paar davon eingebaut, hier sind einige Funktionen, die Benutzer, Begriffe und Beiträge generieren.
wp user generate --count=5 --role=editor
wp user generate --count=10 --role=author
wp term generate --count=12
wp post generate --count=50
WP-Cron Ereignisse verwalten
In WP-CLI kann man die WP-Cron-Ereignisse und/oder einen WordPress-Cron-Job verwalten. Mit dem folgenden Befehl erhält man z.B. Ihre aktuelle Cron-Ereignislisten.
wp cron event list
Transienten löschen
Mit dem folgenden Befehl kann man sogar eine oder alle Transienten löschen und ausräumen.
wp transient delete --all
If you’re running multisite, you’ll need a little more complicated command. By default, the command only checks the wp_options
table. It doesn’t check for wp_1_options
, wp_2_options
, etc.
Wenn du mehrere Webseiten betreibst, brauchst du einen etwas komplizierteren Befehl. Standardmäßig prüft der Befehl nur die wp_options
-Tabelle. Er prüft nicht auf wp_1_options
, wp_2_options
, usw.
wp transient delete --all --network && wp site list --field=url | xargs -n1 -I % wp --url=% transient delete --all
Tabelle wp_options aufräumen
Die wp_options-Tabelle kann ein üblicher Übeltäter für langsame Abfragezeiten auf der Webseite sein, die auf automatisch geladene Daten zurückzuführen sind, die von Plugins und Themes von Drittanbietern hinterlassen werden. Siehe dir diesen großartigen Artikel von WP Bullet über die Verwendung von WP-CLI zur Bereinigung deiner wp_options-Tabelle an.
WordPress Überarbeitungen löschen
Auf großen Webseiten können sich WordPress-Revisionen sehr schnell zu Tausenden von Zeilen in deiner Datenbank addieren, die nicht benötigt werden. Mit WP-CLI kann man die Nachrevisionen löschen. Hier ist ein Beispiel für diesen Befehl:
$ wp post delete $(wp post list --post_type='revision' --format=ids)
Control Maintenance Mode
Ab WP-CLI v2.2.0 kann man nun den Wartungsmodus auf der WordPress-Seite kontrollieren. Beispiel:
wp maintenance-mode activate wp maintenance-mode deactivate wp maintenance-mode status
Indexierung von Daten mit Elasticsearch
Elasticsearch ist eine Open-Source-Volltext-Suchmaschine. Sie wird verwendet, um Daten zu indexieren und diese Daten unglaublich schnell zu durchsuchen. Wir bieten dies als Add-on für Kinsta-Kunden an. Über die ElasticPress WP-CLI-Befehle kann die Indexierung über SSH durchgeführt werden. Beispiel:
wp elasticpress index [--setup] [--network-wide] [--posts-per-page] [--nobulk] [--offset] [--show-bulk-errors] [--post-type]
Arbeiten mit mehrsprachigen Seiten
WP-CLI v2.0.0 enthält eine neue Reihe von Befehlen wp i18n
für diejenigen unter euch, die mit mehrsprachigen Webseiten arbeiten. So kann beispielsweise eine POT-Datei für ein WordPress-Plugin oder ein Theme erstellt werden.
wp i18n make-pot [] [--slug=] [--domain=] [--ignore-domain] [--merge[=]] [--exclude=] [--skip-js]
Siehe Dokumentation zum i18n-Befehl
Verwendung von WP-CLI mit WooCommerce.
Arbeitest du mit eCommerce-Seiten? 🛒 Wir empfehlen dir, den erstaunlichen WP-CLI WooCommerce-Entwicklungsleitfaden von Robot Ninja um schnelle und einfache Befehle zu lernen, die du verwenden kannst. Das Erstellen einer Kundenliste, Bestellungen und sogar das Erstellen von Massenprodukten ist mit WP-CLI möglich.
WP-CLI remote verwenden
Eines der besten Dinge, die man mit WP-CLI tun kann, ist die Verwaltung deiner WordPress-Remote-Installationen. Dies ist der wahr gewordene Traum eines Website-Verwalters.
Für die nahtlose Ausführung von WP-CLI-Befehlen auf einem Remote-Server über SSH benötigt man bisher den Zusatzbefehl wp-cli-ssh. Aber seit v0.24.0 ist dies nun Teil von WP-CLI selbst! 👏
Wichtig: Du musst WP-CLI sowohl auf dem Computer, von dem aus der Befehl ausgeführt wird, als auch auf deinem Server installiert haben.
Konfigurieren von Remote-Servern
Du kannst deine Server global oder lokal konfigurieren. Um sie global zu konfigurieren, verwende die Datei config.yml
. Darüber hinaus steht dir die Datei wp-cli.yml
oder wp-cli.local.yml
in deinem aktuellen Arbeitsverzeichnis zur Verfügung.
Die Konfiguration von Servern funktioniert in etwa so, füge diese in eine der genannten Dateien ein:
ssh:
staging:
cmd: ssh %pseudotty% [email protected] %cmd%
url: http://myseite.com
path: /www/path/to/site/root
Sobald dies alles erledigt ist, kannst du den folgenden Befehl eingeben, um WordPress auf deiner Remote-Seite zu aktualisieren:
wp ssh core update --host=staging
Wenn man viele Seiten besitzt oder verwaltet, kann man wohl sehen, dass dies erstaunlich ist! Das Skript fragt nach einem Passwort, aber wenn du dich mit RSA-Schlüsseln einloggst, kannst du auch darauf verzichten. Schaue dir diesen Artikel an, um ihn einzurichten.
Verwendung von Bash-Skripten
Mit Bash-Skripten spart man durch die Automatisierung von Aufgaben noch mehr Zeit. Erinnere dich, dass wir eine Menge Befehle eingeben mussten, um WordPress zu installieren? Das kann man mit einem einzigen Bash-Skript erledigen. Erstelle innerhalb eines Verzeichnisses eine install.sh
-Datei. Füge den gleichen Code ein, den wir zuvor darin hatten, und speichere ihn.
wp core download
wp core config --dbname=mydbname --dbuser=mydbuser --dbpass=mydbpass --dbhost=localhost --dbprefix=whebfubwef_ --extra-php <<PHP
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
PHP
wp db create
wp core install --url=http://siteurl.com --title=SiteTitle --admin_user=username --admin_password=mypassword [email protected]
Du brauchst jetzt nur noch bash install.sh
einzugeben, und alles wird für dich erledigt, ohne dass der Benutzer eingreifen muss. Wenn du viele Webseiten verwaltest, kannst du alle Umgebungen einrichten und ein Bash-Skript wie dieses erstellen:
wp ssh core update --host=clientA
wp ssh core update --host=clientB
wp ssh core update --host=clientC
wp ssh core update --host=clientD
Wenn eine neue WordPress-Version herauskommt, könnte dies eine Menge Zeit sparen! Da man mit WP-CLI alles machen kann, was man will, kann man sogar Themes und Plugins regelmäßig auf mehreren Kundenseiten gleichzeitig aktualisieren.
Zusammenfassung
WP-CLI ist der wahr gewordene Traum des Entwicklers und Webseitenbetreibers. Als Entwickler können wir im Handumdrehen Testseiten erstellen, Testinhalte hinzufügen und alle Arten von Import-/Export Zauberei betreiben. Seiten-Manager können Seiten-Updates und andere Aufgaben für mehrere Seiten mit einzelnen Befehlen erledigen. Schaue dir unbedingt die WP-CLI v2 Release Notes an!
Falls du WP-CLI noch nicht ausprobiert hast, bitte ich dich dringend, es auszuprobieren. Es gibt auch eine Reihe von Gemeinschaftsbefehlen wie WP-CLI-SSH, die noch mehr großartige Funktionen hinzufügen! Wenn du auf Probleme stößt, solltest du dir unbedingt die WP-CLI Common Issues-Dokumentation ansehen.
Vergiss nicht, dass Kinsta’s Google-Cloud-basierte Architektur WP-CLI von Anfang an unterstützt. Wenn du die modernste WordPress-Hosting-Architektur ausprobieren und Zugang zu großartigen Tools wie WP-CLI haben möchtest, probiere unser gemanagtes WordPress-Hosting aus.
Schreibe einen Kommentar