WP-CLI mit Parameter aus Textdateien füttern

Ich stand eben vor einer Aufgabe rund 100 Terme einer bestimmten Taxonomie anzulegen. Der Kunde hatte dazu eine Tabelle geschickt. Über das Terminal geht das mit WP-CLI zum Glück ziemlich schnell.

Zuerst speichert man alle Terme in einer einfache Textdatei, z.B. terms.txt . Ein Name pro Zeile. Als nächstes muss man in einem Texteditor (search and replace) alle Leerzeichen durch einen Backslash maskieren. Die Datei sollte dann in etwa so aussehen:

Obst
Gemüse
Fisch\ und\ Fleisch
Getreide
Hülsenfrüchte

Als nächstes verwendet man xargs um jede Zeile als Parameter für einen WP-CLI Aufruf zu verwenden:

$ < termx.txt xargs -d '\n' -I %TERM% sh -x -c "wp term create category %TERM%"

< terms.txt leitet den Inhalt der Datei auf stdIn. xargs teilt den Inhalt nach Zeilenumbrüchen (-d '\n') und ersetzt %TERMS% mit je einer Zeile im nachfolgenden Befehl. sh führt schließlich den Befehl aus (-x), denn wir als String (-c "…") zusammen setzen. In diesem Fall wp terms create.

Den Umweg über sh und xargs -I könnte man sich sparen, wenn man wp-cli keine weiteren Parameter mitgeben möchte. Andernfalls kann man z.B. allen Termen in einer Datei ein Parent-Term zuweisen.

$ < termx.txt xargs -d '\n' -I %TERM% sh -x -c "wp term create category %TERM% --parent=42"

Es spielt im Übrigen keine Rolle, ob die Weiterleitung des Dateiinhalts am Anfang oder am Ende des Befehls steht:

$ xargs -d '\n' -I %TERM% sh -x -c "wp term create category %TERM% --parent=183" < terms.txt
+ wp term create category Obst --parent=183
Success: Created category 207.
+ wp term create category Gemüse --parent=183
Success: Created category 208.
+ wp term create category Fisch und Fleisch --parent=183
Success: Created category 209.
+ wp term create category Getreide --parent=183
Success: Created category 210.
+ wp term create category Hülsenfrüchte --parent=183
Success: Created category 211.
+ wp term create category --parent=183

Kommentare

Es wurden noch keine Kommentarte zu diesem Artikel geschrieben.

Fragen, Ideen oder Kritik? – Hier ist Platz dafür!

Dein Kommentar

Um ein Kommentar abzugeben, reicht der Text im Kommentarfeld. Die Angabe eines Namens wäre nett, ist aber nicht erforderlich.

Du darfst folgenden HTML-Code verwenden, musst aber nicht:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>