这是我的挑战:我有一个包含 20,000 行数据的 .csv 文件。
每一行 包含有关特定个人的 5 列数据。
我需要将每一行(每个人)填充到一个 WordPress 页面或帖子中。 因此,换句话说,我需要将 20,000 行从 .csv 转换为 20,000 个帖子或页面(即 HTML 文件)。
我该怎么做? 有没有插件或者你会建议这更像是一个 mySQL 命令?
任何方向感激不尽!
谢谢!
使用 WP-CLI 从 .csv 文件导入帖子
如果我们的 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 文件导入用户,但我还没有看到这种帖子的核心功能。
我们可以为 csv 帖子导入编写自己的 WP-CLI 命令。
然后是插件,比如 WP CLI Import CSV,似乎已经完成了(我与它无关,也没有使用过)。
请注意,如果您可以将 csv 文件转换为 wxr 文件,WP-CLI 可以导入 wxr 文件。
另请注意,目前 (4.8) WordPress 不处理 分层的 在 wp-admin 后端很好地发布类型(又名页面)。 该类型的所有帖子都会立即加载到父选择的下拉列表中。 在后端工作时,这不能很好地扩展并且可能导致 PHP 超时! 参见此处的示例。 所以 选择非分层帖子类型 (又名帖子)在您的大量进口中。