it-swarm.com.de

20.000 Beiträge oder Seiten mit einer CSV-Datei erstellen?

Hier ist meine Herausforderung: Ich habe eine CSV-Datei, die 20.000 Datenzeilen enthält.

Jede Zeile enthält 5 Datenspalten zu einer bestimmten Person.

Ich muss jede Zeile (jede Person) in eine WordPress-Seite oder einen WordPress-Post einfügen. Mit anderen Worten, ich muss 20.000 Zeilen aus einer CSV-Datei in 20.000 Posts oder Seiten (d. H. HTML-Dateien) konvertieren.

Wie würde ich das machen? Gibt es ein Plugin oder würden Sie vorschlagen, dass dies eher ein mySQL-Befehl ist?

Jede Richtung dankbar erhalten!

Vielen Dank!

4
henry

Beiträge aus einer CSV-Datei mit WP-CLI importieren

Wenn unser import.csvtab mit zwei Spalten getrennt ist:

Planet Mars     The red planet. 
Planet Earth    Our blue planet.

dann können wir es mit Hilfe von answer analysieren, wobei wir stattdessen IFS=$'\t' als Tabulatortrennzeichen verwenden:

while IFS=$'\t', read col1 col2; \
do \
    echo "$col1|$col2";
done < import.csv

Beachten Sie, dass die Spaltenanzahl weitgehend mit den Spalten der Datei übereinstimmt.

Verwenden wir nun WP-CLI, um Posts mit wp create post zu erstellen:

while IFS=$'\t', read col1 col2; \
do \
  wp post create \
    --post_title="$col1" \
    --post_content="$col2" \
    --post_author=1 \
    --post_type=post \
    --post_status=publish \
done < import.csv

Wenn wir zusätzliche Metadaten haben, wie die durchschnittliche Entfernung von der Sonne in astronomischen Einheiten (au):

Planet Mars     The red planet.     1.52
Planet Earth    Our blue planet.    1.00

dann können wir versuchen:

while IFS=$'\t', read col1 col2 col3; \
do \
  wp post create \
    --post_title="$col1" \
    --post_content="$col2" \
    --post_author=1 \
    --post_type=post \
    --post_status=publish \
    | xargs -I % wp post meta add % distance_au "$col3"; done < import.csv

Es wäre praktisch, wenn wp post create das Argument meta_input von wp_insert_post() unterstützen würde.

Wir hätten dies auch mit wp_insert_post() aus einer PHP-Datei mit dem wp eval-fileBefehl ausschreiben können.

WP-CLI unterstützt das Importieren von Benutzern aus einer CSV-Datei, aber ich habe diese Art von Kernfunktion für Posts noch nicht gesehen.

Wir könnten stattdessen unseren eigenen WP-CLI-Befehl für den Import von CSV-Posts schreiben.

Dann gibt es Plugins wie WP CLI Import CSV , die das anscheinend schon getan haben (ich bin nicht verwandt damit und habe es nicht benutzt).

Beachten Sie, dass WP-CLI Dateien importieren kann wxr, wenn Sie Ihre csv-Datei in eine oder mehrere wxr-Dateien konvertieren können.

Beachten Sie auch, dass WordPress derzeit (4.8) hierarchisch Post-Typen (auch als Seiten bezeichnet) im wp-admin-Backend nicht gut verarbeitet. Alle Posts dieses Typs werden sofort in die Dropdown-Liste der übergeordneten Auswahl geladen. Das skaliert nicht gut und kann zu PHP Timeout führen, wenn im Backend gearbeitet wird! Siehe zum Beispiel hier . Also für nicht hierarchische Beitragstypen gehen (aka Beiträge) in Ihren großen Importen.

4
birgire