Entfernen aller Post-Tags außer einer bestimmten Liste

Ich habe eine Anfrage von einem Kunden erhalten, alle Post-Tags außer denen in einer Datei, die sie mir zur Verfügung gestellt haben, zu entfernen.

Ich habe versucht, herauszufinden, wie man es mit wp term macht, sehe aber keine Möglichkeit, aus einer Datei zu arbeiten. Meine beste Vermutung wäre etwas wie:

wp term list post_tag --field=name | xargs wp term 

Soweit ich weiß, würde jede Hilfe sehr geschätzt werden 🙂

Danke, Joe M

Solutions Collecting From Web of "Entfernen aller Post-Tags außer einer bestimmten Liste"

Angenommen, Sie haben eine CSV-Datei Ihrer ausgeschlossenen IDs, und dieser Dateiname lautet exclude_tags.csv

Das Format dieser Datei sollte sein

 1,2,3,4 

Dies würde Tags mit den IDs 1 , 2 , 3 und 4

Versuche dies

 $ wp term list post_tag --exclude=$(cat exclude_tags.csv) --field=term_id | xargs wp term delete post_tag 

Im Grunde wird dies die Ausgabe von wp term list an xargs senden, die den Befehl wp term delete ausführen werden

Hol dir alle Tags

Dies erzeugt eine Datei all_tags.csv die alle Ihre Tags enthält. Sie könnten damit Ihre excluded_tags.csv Datei erzeugen

 wp term list post_tag --format=csv >all_tags.csv 

HINWEIS

Ich habe versucht, alles auf der Kommandozeile zu tun, aber aus irgendeinem Grund kann ich kein Array von Term-Slugs an die wp function übergeben. Ich fragte nach Github , wenn ich eine Antwort bekomme , werde ich es hier aktualisieren. Das Folgende würde also alle Tags --slug= und eine CSV-Datei bereitstellen, die nur die ID der Tags enthält – in --slug= dieser Parameter würde mein Array akzeptieren.

 paste -sd, < (wp term list post_tag --field=term_id --slug=[tag1,tag2,etc]) >excluded_tags.csv 

AKTUALISIEREN

Wie sich herausstellt, wird die Bereitstellung mehrerer Laufzeit-Slugs an --slug= gemäß meinem github- Ticket nicht unterstützt. Daher müssten Sie eine Zwischendatei generieren und manuell damit arbeiten, um Ihre Datei ” excluded_tags.csv ” vor dem Löschen zu generieren Ihre unerwünschten Tags.