WP-CLI ist ein Satz von Befehlen für die Verwaltung von WordPress-Installationen.
Das mächtige an CLI gesteuerten Dingen ist das wir Browser-Frei Dinge tun können.
Und Browser-Frei vereinfacht das Automatisieren von Dingen.
Ergo sind CLI Dinge cool.
TL;DR
Dieser Beitrag reflektiert den Stand von WP-CLI v2.4
(2020-12).
Befehl | Beschreibung |
---|---|
wp i18n make-json | Skript-Sprachdateien erstellen |
wp core update-db | WP Core Datenbank aktualisieren |
wp post delete $(wp post list --post_type='revision' --format=ids) | Revisionen löschen |
wp rewrite flush | Rewrite Rules flushen |
wp db export | Datenbank exportieren |
wp search-replace | Datenbank Inhalte suchen/ersetzen |
wp plugin activate | Plugins aktivieren |
wp user create {username} {email} --role=administrator | Admin erstellen |
wp user update {username} --user_pass="{password}" | Passwort ersetzen |
wp shell | Interaktive Shell öffnen |
wp eval 'echo WP_CONTENT_DIR;' | PHP via CLI ausführen |
wp eval-file AFile.php | PHP-Dateien via CLI ausführen |
Skript-Sprachdateien erstellen
- Docs: wp i18n make-json
- Guide: krautpress
Damit wandelt WP-CLI einen Ordner aus PO-Dateien in JavaScript fähige Übersetzungen um.
wp i18n make-json languages/ --no-purge
Das Argument --no-purge
stellt sicher das PO-Dateien unverändert bleiben.
Mit wp_set_script_translations
setzen wir in WordPress die neuen Übersetzungen.
final class CustomScriptTranslationProvider
{
/**
* @var string
*/
private string $languagesPath;
/**
* @param string $languagesPath
*/
public function __construct(string $languagesPath)
{
$this->languagesPath = $languagesPath;
}
/**
* Verknüpft Übersetzungen und Skript-Handles.
*
* @return void
*/
public function provide(): void
{
wp_set_script_translations(
'handle',
'domain',
$this->languagesPath
);
}
}
// Initialisieren ein Objekt mit dem Sprach-Datei Ordner.
$customScripTranslationProvider = new CustomScriptTranslationProvider(
plugin_dir_path(__FILE__).'languages'
);
add_action('init', [$customScripTranslationProvider, 'provide']);
WP Core Datenbank aktualisieren
- Docs: wp core update-db
Dieser Befehl stößt ein WP-Core Datenbank Update an.
Hilfreich, wenn aus Gründen der Befehl auf anderen Wegen nicht funktioniert.
wp core update-db
Multisite
wp core update-db --network
Revisionen löschen
Ein Weg um WordPress von Revisionen zu befreien, liefert wp post delete
in Kombination mit wp post list
.
wp post delete $(wp post list --post_type='revision' --format=ids)
Multisite
for URL in $(wp site list --field=url); do wp post delete $(wp post list --post_type='revision' --format=ids --url="$URL") --url="$URL" --force; done
Rewrite Rules flushen
- Docs: wp rewrite flush
Die CLI-Alternative für flush_rewrite_rules()
wp rewrite flush
Multisite
for URL in $(wp site list --field=url); do wp rewrite flush --url="$URL"; done
Datenbank Inhalte suchen und ersetzen
- Docs: wp search-replace
- Docs: wp db export
Damit lassen sich Datenbank Inhalte von etwas in etwas anderes ersetzen.
Bevor du wild los ersetzt, bietet es sich ein Datenbank-Backup an:
wp db export
Sobald wir sicher sind, das Dinge wieder herstellbar sind, geht es los.
Zum Beispiel erzwingen wir HTTPS an allen „Domain“ URLs.
wp search-replace http://domain.com https://domain.com --all-tables
Das Argument --all-tables
gilt auch für Multisites.
Obacht: Möchtest du Core Tabellen wie wp_options
ignorieren, hast du zwei Möglichkeiten. Entweder entfernst du das Argument --all-tables
oder nutzt das Argument --skip-tables=*_options*{,*_posts*}
.
Plugins aktivieren
- Docs: wp plugin activate
Um Plugins per CLI zu aktivieren:
wp plugin activate {plugin}
Unter Umständen können Plugins aufgrund eines Konflikts nicht aktiviert werden.
Um tiefer einzutauchen, wäre es praktisch das Plugin aktiv zu haben.
Daher liefert WP-CLI das Argument --skip-plugins
.
wp plugin activate {plugin} --skip-plugins
Multisite
wp plugin activate {plugin} --network
Admin erstellen
- Docs: wp user create
Benutzerverwaltung über CLI.
Um einen Admin zu erstellen:
wp user create {username} {email} --role=administrator
Multisite
wp user create {username} {email} --role=administrator && wp super-admin add {username}
Passwort ersetzen
- Docs: wp user update
Ein Beispiel um einem Benutzer ein neues Passwort zu setzen:
wp user update {username} --user_pass="{password}"
Interaktive Shell öffnen
- Docs: wp shell
Öffnet eine interaktive PHP Konsole um Dinge zu testen / auszuführen.
wp shell
wp> get_bloginfo( 'name' );
=> string(18) "marceichenseher.de"
PHP via CLI ausführen
- Docs: wp eval
- Docs: wp eval-file
Neben der interaktiven Shell können wir mit eval
PHP-Befehle ausführen.
Das praktische hier ist, das der Code weder im Plugin noch im Theme liegen muss, aber die komplette Palette an WordPress Funktionalitäten ansprechen kann.
wp eval
erwartet eine Zeile an PHP-Befehlen:
wp eval 'echo WP_CONTENT_DIR;'
Wohin gegen wp eval-file
eine PHP-Datei erwartet.
wp eval-file AFile.php
Schreibe einen Kommentar