Создание 20 000 Сообщений или страниц с использованием файла.csv?


Вот моя задача: у меня есть файл .csv, который содержит 20 000 строк данных.

Каждая строка содержит 5 столбцов данных об определенном человеке.

Мне нужно, чтобы каждая строка (каждый человек) была заполнена на странице WordPress или в публикации. Итак, другими словами, мне нужно преобразовать 20 000 строк из файла .csv в 20 000 сообщений или страниц (т. Е. HTML-файлов).

Как бы я поступил в этом случае? Есть ли плагин или вы бы предположили, что это больше похоже на MySQL командовать?

Любое направление с благодарностью принято!

Спасибо!

Author: henry, 2017-07-31

1 answers

Импортируйте сообщения из файла .csv с помощью WP-CLI

Если наш import.csv разделен вкладкой с двумя столбцами:

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

Затем мы можем проанализировать его с помощью этого ответа , где вместо этого мы используем IFS=$'\t' в качестве разделителя табуляции:

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

Обратите внимание, что количество столбцов должно соответствовать столбцам файла.

Теперь давайте использовать WP-CLI для создания сообщений с wp create post:

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

Если у нас есть дополнительные метаданные, такие как среднее расстояние от Солнца в астрономических единицах (au):

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

Тогда мы можем попробовать:

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

Было бы удобно, если бы wp post create поддерживал аргумент meta_input wp_insert_post().

Мы также могли бы записать это с помощью wp_insert_post() из php-файла с wp eval-file команда.

WP-CLI поддерживает импорт пользователей из csv-файла, но я еще не видел такой основной функции для сообщений.

Вместо этого мы могли бы написать нашу собственную команду WP-CLI для импорта сообщений csv.

Тогда есть являются плагинами, такими как WP CLI Import CSV, которые, похоже, уже сделали это (я не связан с этим и не использовал его).

Обратите внимание, что WP-CLI может импортировать файлы wxr, если вы можете конвертировать ваш csv-файл в файлы wxr.

Также обратите внимание, что в настоящее время (4.8) WordPress плохо обрабатывает иерархические типы записей (также известные как страницы) в бэкэнде wp-администратора. Все записи этого типа загружаются сразу в раскрывающийся список родительского выбора. Это не очень хорошо масштабируется и может привести к тайм-ауту PHP при работе в бэкэнде! Смотрите, например, здесь. Поэтому выбирайте неиерархические типы сообщений (они же сообщения) в вашем большом импорте.

 6
Author: birgire, 2021-01-22 09:05:22