Создание 20 000 Сообщений или страниц с использованием файла.csv?
Вот моя задача: у меня есть файл .csv, который содержит 20 000 строк данных.
Каждая строка содержит 5 столбцов данных об определенном человеке.
Мне нужно, чтобы каждая строка (каждый человек) была заполнена на странице WordPress или в публикации. Итак, другими словами, мне нужно преобразовать 20 000 строк из файла .csv в 20 000 сообщений или страниц (т. Е. HTML-файлов).
Как бы я поступил в этом случае? Есть ли плагин или вы бы предположили, что это больше похоже на MySQL командовать?
Любое направление с благодарностью принято!
Спасибо!
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 при работе в бэкэнде! Смотрите, например, здесь. Поэтому выбирайте неиерархические типы сообщений (они же сообщения) в вашем большом импорте.