2026年9月9日
2026年9月9日
WP All Importで大量データをインポートする方法|CSVの準備・分割処理・速度の設定
WP All Importは、CSV・XML・Excelのファイルを読み込み、項目をドラッグ&ドロップで投稿のタイトルや本文に割り当てて、WordPressに一括で取り込むプラグインです。件数が数千〜数万になると、タイムアウトや重複、画像の取り込み待ちで止まりやすくなります。この記事では、大量データを取り込むときの準備と設定を、公式ドキュメントに沿って説明します。
無料版とPro版でできること
WP All Importには、wordpress.orgで配布されている無料版と、有料のPro版があります。2026年10月時点のwordpress.orgのプラグインページでは、おおむね次のように案内されています。
| 機能 | 無料版 | Pro版 |
|---|---|---|
| CSV・XML・Excelファイルの取り込み | ○ | ○ |
| 投稿・固定ページ・カスタム投稿タイプなどへの取り込み | ○ | ○ |
| カスタムフィールドへの取り込み | Pro版の機能として案内 | ○ |
| 画像をメディアライブラリ(投稿のギャラリー)に取り込む | Pro版の機能として案内 | ○ |
| URLからファイルを取得して取り込む | Pro版の機能として案内 | ○ |
| cronによる定期的な取り込み | × | ○ |
WP-CLIでの実行(wp all-import) |
× | ○ |
WooCommerceの商品やAdvanced Custom Fields(ACF)のフィールドに取り込むには、それぞれ有料のアドオンが必要です。機能の範囲は版によって変わることがあるため、使う前に公式の比較ページで確認してください。WP-CLIのコマンドは公式ドキュメントで案内されていますが、2026年10月時点の無料版の配布ファイルには含まれていません。
インストールは、管理画面の「プラグイン」→「新規追加」で「WP All Import」を検索するか、WP-CLIで行います。
wp plugin install wp-all-import --activate
取り込む前の準備
バックアップを取る
取り込みは大量の投稿を一度に作成・更新します。設定を誤ると元に戻すのが大変なため、作業前にデータベースを書き出しておきます。
wp db export before-import-$(date +%Y%m%d).sql
取り込みの規模が大きい場合は、最初にステージング環境で試し、結果を確かめてから本番で実行すると安全です。
CSVファイルを整える
- 文字コードはUTF-8にする:Excelで「CSV」として保存すると、日本語環境ではShift_JISになることがあります。「CSV UTF-8」形式で保存するか、テキストエディターでUTF-8に変換してください
- 1行目を見出しにする:見出しの文字列が、取り込み画面で項目名として表示されます
- 1件ごとに一意の値の列を用意する:商品コードや元システムのIDなど、データを更新しても変わらない値です。後述の「一意の識別子」に使います
- 日付の書式をそろえる:
2026-10-01 09:00:00のような形にそろえておくと、投稿日時として読み込みやすくなります - 複数のカテゴリーやタグは区切り文字でまとめる:たとえば
ニュース|お知らせのように1つのセルに入れ、取り込み画面で区切り文字を指定します - 画像はURLかファイル名で指定する:画像を取り込む場合は、画像のURL(またはアップロード済みのファイル名)を列に入れます
取り込みの手順
管理画面の「All Import」→「New Import」から始めます。画面は4つのステップに分かれています(以下、画面の表記は英語版のものです)。
ステップ1:ファイルを選び、取り込み先を決める
ファイルをアップロードし、取り込み先の種類(投稿、固定ページ、カスタム投稿タイプなど)を選びます。
- 新しく投稿を作る場合は「New Items」を選びます
- すでにサイトにある投稿を、ファイルの内容で更新するだけの場合は「Existing Items」を選びます
ステップ2:ファイルの内容を確認する
読み込まれたデータが1件ずつ表示されます。文字化けしていないか、列が正しく分かれているかを確認します。この画面では、条件に合う行だけを取り込むフィルターも設定できます。大量データの場合は、ここで件数を絞って小さく試すこともできます。
ステップ3:項目を割り当てる
右側に表示されるCSVの項目を、左側のタイトル・本文・抜粋・投稿日時・カテゴリーなどの欄にドラッグ&ドロップで割り当てます。カテゴリーやタグの欄では、準備で決めた区切り文字を指定します。投稿のステータス(公開・下書き)もこの画面で決めます。最初の取り込みは下書きにしておくと、内容を確認してから公開できます。
ステップ4:一意の識別子と詳細設定を決める
「Unique Identifier」は、ファイルの各行とWordPressの投稿を結び付けるための値です。「Auto-detect」で自動設定することもできますが、大量データでは、準備で用意した一意の値の列(商品コードなど)を指定してください。公式ドキュメントでは、価格や説明文のように後から変わる値は識別子に向かないとされています。また、同じ識別子を持つ行が複数あると、最初の1件だけが作成されます。
識別子を正しく決めておけば、同じファイルを修正して再度取り込んだときに、重複を作らずに既存の投稿を更新できます。
詳細設定(Configure Advanced Settings)には、大量データの取り込みに関わる次の項目があります。
| 設定 | 内容 |
|---|---|
| In each iteration, process X records | 1回の処理で取り込む件数。値を大きくすると速くなるが、1回の処理時間が延びる |
| Split file up into X record chunks | ファイルを指定件数ごとに分割して処理する |
| Increase speed by disabling do_action calls in wp_insert_post during import | 取り込み中に他のプラグインのフックを動かさず、速度を上げる |
設定を確認したら、最後の画面で取り込みを実行します。取り込み中はブラウザーのタブを閉じずに待ちます。
大量データを止めずに取り込むための設定
WP All Importは、ファイルを小さな単位に分けて、順に処理します。大量データで止まる原因の多くは、1回の処理がPHPの実行時間の上限を超えることです。公式ドキュメントの案内をまとめると、次のように調整します。
- 途中でタイムアウトする場合:「In each iteration, process X records」の値を下げる。値を上げるとタイムアウトしやすくなる
- タイムアウトはしないが遅い場合:値を少しずつ上げる。CPUやメモリーに余裕があれば、値が大きいほど速く終わる
- 画像の取り込みがある場合:画像のダウンロードも1回の処理時間に含まれます。20件×各5枚なら、100枚のダウンロードが1回の処理時間内に終わる必要があります。画像は別の取り込みに分けるか、外部サイトからダウンロードせず、サーバー上のファイルを使うと速くなります
- 画像最適化プラグイン:取り込み中は、画像の圧縮や変換を行うプラグインを一時的に止め、不要な画像サイズの生成も減らすと速くなります
- 「Increase speed by disabling do_action calls…」:有効にすると速くなりますが、他のプラグインが保存時に行う処理(SEOプラグインのメタ情報の更新など)も動かなくなります。有効にした場合は、取り込まれた投稿が正しいかを確認してください
PHPの実行時間とメモリーの上限を上げる
レンタルサーバーやVPSの設定で、PHPの max_execution_time や memory_limit が小さいと、件数を下げても止まることがあります。設定する場所は、PHPの動かし方で異なります。
| PHPの動作方式 | 設定する場所 |
|---|---|
| PHP-FPM(多くのVPS・レンタルサーバー) | プールの設定ファイル、またはドキュメントルートの .user.ini |
| Apacheのモジュール(mod_php) | php.ini または .htaccess の php_value |
| レンタルサーバー | 管理画面の「PHP設定」などの項目 |
PHP-FPMでは .htaccess の php_value は使えません(Apacheのモジュールとして動くPHP専用の書き方です。PHP-FPMの環境で書くと500エラーになることがあります)。PHP-FPMの場合は、ドキュメントルートに .user.ini を置きます。
; .user.ini(PHP-FPM・CGIで有効。反映まで既定で最大5分かかる)
max_execution_time = 300
memory_limit = 512M
VPSでプールの設定を変えられる場合は、プールの設定ファイル(Debian/Ubuntuなら /etc/php/8.3/fpm/pool.d/www.conf など)に書き、PHP-FPMを再読み込みします。
php_admin_value[max_execution_time] = 300
php_admin_value[memory_limit] = 512M
sudo systemctl reload php8.3-fpm
パスとサービス名のバージョン部分は、使っているPHPに合わせてください(例は2026年10月時点のDebian/Ubuntuのパッケージの場合です)。反映されたかは、管理画面の「ツール」→「サイトヘルス」の「情報」タブにある「サーバー」の項目で確認できます。
Pro版ではWP-CLIで実行できる
Pro版では、管理画面で作って保存した取り込みを、WP-CLIから実行できます。
# 保存済みの取り込みの一覧
wp all-import list
# IDが1の取り込みを実行(履歴ログを残さない)
wp all-import run 1 --disable-log
公式ドキュメントでは、WP-CLIでの実行は管理画面より速く終わる傾向があるとしつつ、大量データではサーバー側のタイムアウトに当たる可能性があるとしています。また、アドオンによってはWP-CLIに対応していません。取り込みの作成と編集は管理画面で行います。
2回目以降の取り込みと更新
同じファイルを修正して取り込み直す場合は、管理画面の「All Import」→「Manage Imports」から既存の取り込みを開き、設定を引き継いで再実行します。一意の識別子が同じ行は、既存の投稿が更新されます。
更新の件数が多い場合は、取り込みの設定で「Skip posts if their data in this import file has not changed」を有効にすると、前回から変わっていない行を飛ばせます。公式ドキュメントでは、この設定には「Keep images currently in Media Library」の有効化も必要とされています。
取り込み後の確認
取り込みが終わったら、件数と中身を確認します。
# 投稿の件数(取り込み先が投稿の場合)
wp post list --post_type=post --post_status=any --format=count
# 最近作られた投稿を数件表示
wp post list --post_type=post --post_status=any --orderby=ID --order=DESC --posts_per_page=5 --fields=ID,post_title,post_date,post_status
- ファイルの行数と、作成された投稿の件数が合っているか
- 日本語が文字化けしていないか
- カテゴリー・タグ・投稿日時が意図どおりか
- 画像を取り込んだ場合、アイキャッチ画像が設定されているか
結果が意図と違う場合は、作業前に書き出したデータベースを読み込んで元に戻せます。
wp db import before-import-20261030.sql
ファイル名は、書き出したときの日付に置き換えてください。読み込むと、取り込み後に行ったほかの変更(コメントや注文など)も書き出した時点に戻ります。本番で実行する場合は、サイトの更新が少ない時間帯に作業してください。
まとめ
- 無料版でもCSV・XML・Excelから投稿を一括作成できる。カスタムフィールド・画像・定期実行・WP-CLIはPro版の機能として案内されている
- 作業前にデータベースを書き出し、CSVはUTF-8・見出し行あり・一意の値の列ありで整える
- ステップ4の「Unique Identifier」には、後から変わらない値を指定する。再取り込みで重複を防げる
- タイムアウトするときは「In each iteration, process X records」を下げ、遅いだけなら上げる
- PHP-FPMでは
.htaccessのphp_valueは使えない。.user.iniかプールの設定で上限を上げる - 取り込み後は件数・文字化け・カテゴリー・画像を確認する
関連記事: