web-dev-qa-db-ja.com

.csvファイルを使用して20,000の投稿またはページを作成しますか?

これが私の課題です。20,000行のデータを含む.csvファイルがあります。

各行 には、特定の個人に関する5列のデータが含まれます。

WordPressのページまたは投稿に入力するには、各行(各個人)が必要です。したがって、言い換えれば、.csvから20,000行を20,000の投稿またはページ(つまりHTMLファイル)に変換する必要があります。

これについてはどうしたらいいでしょうか。プラグインはありますか、またはこれがもっとmySQLコマンドであることを提案しますか?

どんな方にもありがたく受けました!

ありがとうございます。

4
henry

WP-CLIを使用して.csvファイルから投稿をインポートする

import.csvtabで区切られていて、2つの列がある場合:

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

それでは、この answer を使用して、タブ区切り文字として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 createwp_insert_post()meta_input引数をサポートしていれば便利でしょう。

wp eval-filecommand )を使ってphpファイルからwp_insert_post()でこれを書き出すこともできます。

WP-CLI csvファイルからのユーザーのインポートをサポートしていますが、この種のコア機能はまだ投稿されていません。

代わりに、csvポストのインポート用に独自のWP-CLIコマンドを書くこともできます。

それから、 WP CLI Import CSV のようなプラグインがあります。これは既に実行されているようです(私はこれに関連していないので使用していません)。

Csvファイルをwxrファイルに変換できる場合は、WP-CLIで import wxrファイル)を実行できます。

また、(4.8)WordPressはwp-adminバックエンドで階層投稿タイプ(別名ページ)をうまく処理できないことにも注意してください。その種類のすべての投稿は、親選択のドロップダウンに一度に読み込まれます。バックエンドで作業している場合、それはうまくスケーリングできず、PHPタイムアウトになる可能性があります。たとえば、 here 。So 非階層型投稿タイプの場合は (別名投稿)を参照してください。

4
birgire