無料でできる!CSVで大量の投稿データを一括でWordPressにインポートする方法
みなさんこんにちは!エンジニアの高澤です!
今回はWordPressの大量の投稿記事データをCSVで一括でインポートする方法について解説していきたいと思います。
今回の方法では筆者自身がこれまでの業務で以下に効率的にWordPressで作業を行えるかを研究し生み出したテクニックになりますので、実務でも十分活用することが可能です。
「Really Simple CSV Importer」プラグインを使用し完全無料で対応できますのでWeb担当者の方から、初心者エンジニアの方〜上級エンジニアの方までよろしければぜひお仕事でご参考にしていただけましたら幸いです。
目次
どんなときに役立つか?
さてまずは簡単に今回のCSVのノウハウがどんな時に役立つのかを確認しておきましょう。
結論以下の内容になります。
- 追加したい記事を(例えば)100、200件と大量の記事をエクセル形式でまとめて一気にWordPressにインポートしたいとき
- 大量の既存の記事を上書き修正したいとき
- いちいち1記事ずつ管理画面を開いて入力する手間を省きたいとき
上記のような場面で今回のノウハウは大活躍するかと思います。
事前に準備すること・前提知識
それでは早速CSVインポートをする前に事前に用意するものを確認しておきましょう。
必要なツール・プラグイン
結論以下のものを事前に用意しておきましょう。
- Googleスプレットシートもしくはエクセル(これで内容をカスタマイズし、CSVを作成します)
- Really Simple CSV Importer(インポートのプラグイン)
- Smart Custom Fields(いつも使っているカスタムフィールドのプラグイン、他Advanceds Custom Fieldsなど)
- Custom Post Type UI (いつも使っているカスタム投稿タイプのプラグイン。※カスタム投稿タイプのデータをインポートしたい場合は用意しましょう)
たったのこれだけです。
これだけで完全無料でCSVインポート作業を行うことが可能です。
作業のおおまかな流れ
CSVインポートのざっくりと大まかな流れを確認しておきましょう。
流れは以下のイメージになります。
- WordPressにCSVをインポートさせるためのプラグインをインストール
- 反映させたい記事データを反映したCSVファイルを作成
- 作成したCSVを管理画面からインポート
- WordPress管理画面の「投稿(post)」もしくは「カスタム投稿タイプ」にCSVの内容が反映完了!
上記のイメージで手順を進めていきたいと思います。
テンプレートとなるCSVフォーマット
テンプレートとなるCSVフォーマットは下図のイメージになります。
上図はエクセルのキャプチャ画像になりますが、同じ内容でGoogleスプレットシートでも問題ありません。
一番先頭の行に半角英数字のデータ名を記述して、どんどんその下に1記事ごとに1行ずつデータを記述していきます。
以下にCSVフォーマットファイルのダウンロードリンクをご用意いたしましたので、ご自由にダウンロードしてぜひお役立てください。
CSVインポートする方法
それでは早速CSVインポート方法について手順を解説していきたいと思います。
プラグインをインストール
最初にプラグインをインストールしてインポート作業ができるようにセットアップしていきます。
WordPress管理画面左メニューの「プラグイン」→「新規プラグインを追加」を開きます。
新規追加画面の右上にあるプラグイン検索ボックスに「Really Simple CSV Importer」と入力します。
入力していただくと、検索結果に「Really Simple CSV Importer」プラグインが表示されるかと思いますので、「今すぐインストール」ボタンをクリックします。
「有効化」をクリックしていただけますとReally Simple CSV Importerプラグインのセットアップが完了です。
これでReally Simple CSV Importerプラグインの機能は使えるようになりました。
それでは同じ手順で以下のプラグインもインストールして有効化してください。
- Smart Custom Fields(もしくはAdvanceds Custom Fieldsなど)
- Custom Post Type UI
上記が完了したら、最初の手順は完了です。
CSVインポートデータを作成
次にCSVフォーマットに沿ってタイトルや本文、カスタムフィールドなどの記事データを入力していただきCSVのインポートデータを作成します。
ダウンロードしていただいたCSVのエクセルシート(スプレットシートでも可)を開いていただき、フォーマットに沿ってデータを入力していきます。
シートの一番上の行はデータ名を入力します。
WordPressの仕様に沿って、決められたデータ名を半角英数字で入力してください。(※データ名は当記事の表でまとめておりますのでご確認ください)
また、カスタムタクソノミー、カスタムフィールドなどのご自身で作成したデータに関しては、そのデータ名を入力してください。
例えば、「sample_custom_data」というデータ名でカスタムフィールドを作成している場合は「sample_custom_data」と入力していただきます。
カスタムタクソノミーのデータ名に関しては注意点があります。
カスタムタクソノミーのデータ名の注意点
カスタムタクソノミーに関しては少し仕様に沿った対応が必要で、データ名の先頭に「tax_」を付けなければいけません。
例えば「sample_custom_tax」というカスタムタクソノミーを作成している場合は「sample_custom_tax」と入力するのではなく、データ名の先頭に「tax_」を追加します。
そのため、「tax_sample_custom_tax」といった具合に修正してシートに入力してください。
CSVを管理画面からインポート
シートが完成しましたらCSVとしてファイルを別名保存し、管理画面からCSVファイルをインポートします。
以下の手順で進めていただけましたら幸いです!
WordPress管理画面左メニューの「ツール」→「インポート」を開きます。
「CSV」の「インポーターの実行」をクリックします。
作成したCSVファイルを「ファイルを選択」部分にドラッグ&ドロップします。
「ファイルをアップロードしてインポート」ボタンをクリックするとインポートが完了します。
無事インポートが完了し、無事上書きor新規作成されているかと思います。
お疲れ様でした!!
データ名について
当記事でご用意させていただきましたCSVフォーマットではそのままではご自身のWordPressのデータ構成にマッチしていない場合があるかと思います。
そのためここではデータ名についてしっかり全体的な決まりを確認していただき、ご自身のWordPressのデータ構成に沿ってCSVシートをカスタマイズしていただければと思います。
以下データ名に関しておまとめさせていただきました。
ご参考にしていただけますと幸いです。
データ名 | 内容 |
post_id | 記事のIDを入力します。 もし上書き編集でなく新規作成の場合は空白で大丈夫です。 記事IDは記事一覧管理画面からご確認いただくか、以下のページをご確認ください。 https://estival.jp/beginner-guide/find-user-id-in-wordpress/ |
post_name | 記事のスラッグ(半角英数字のURLの末尾)を入力します。 空白にした場合は自動生成されます。 |
post_author | 投稿するユーザーのIDを指定します ユーザーID確認する方法はこちらです https://estival.jp/beginner-guide/find-user-id-in-wordpress/ |
post_date | 記事の日付を入力します。 記入例)2023/01/05 0:00:00 |
post_content | 記事の本文を入力します。管理画面から入力いただくのと同じでHTMLタグ(imgタグなど)を記述することが可能です。 |
post_title | 記事のタイトルを入力します。 |
post_excerpt | 記事の抜粋を入力します。 |
post_status | 記事の「公開」や「非公開」などの記事の状態を入力します。 記入例)公開:publish、非公開:private、下書き:draft |
post_password | 記事を保護するためのパスワードを入力します。パスワード文字数は20文字に制限されています。 |
menu_order | 記事の順番を入力します。半角英数字の数字を入力していただき、数字が小さい順に並び替えられます。 |
post_type | 記事の投稿タイプ(記事の種類)を入力します。 記入例)投稿:post、固定ページ:page、カスタム投稿タイプ:カスタム投稿タイプ名 カスタム投稿タイプ名を確認する方法はこちらです https://takayakondo.com/post_type-taxonomy-name/ |
post_thumbnail | 記事のサムネイル画像のURLやパスを入力します。 記入例)http://sample.com/img1.jpg |
post_category | 記事のカテゴリーのスラッグを入力します。 複数入力する場合はカンマ「,」区切りで入力してください。 記入例)sample1,sample2,sample3 |
post_tags | 記事のタグのスラッグを入力します。 複数入力する場合はカンマ「,」区切りで入力してください。 記入例)sample1,sample2,sample3 |
tax_{taxonomy} | カスタムタクソノミー(独自のカテゴリー)の値を入力します。 「tax_{taxonomy}」は列一行目のデータ名としてカスタムタクソノミー名に書き換えて入力してください。 「tax_」はそのままで、「tax_{taxonomy}」の{taxonomy}の部分にカスタムタクソノミー名を入力してください。 |
{custom_field_key} | カスタムフィールドの値を入力します。 「{custom_field_key}」は列一行目のデータ名としてカスタムフィールド名に書き換えて入力してください。 |
CSVフォーマットのエクセルシート(もしくはスプレットシート)記入の際には、基本的に内容は全て管理画面からご入力いただく内容になります。
そのため上記表の内容と管理画面とを照らし合わせながらご入力いただくのがおすすめです。
CSVシート作成の注意点
CSVシートを作成いただく際の注意点がありますので、こちら必ずご確認ください。
- 必ずインポートする前にバックアップを取得してから作業していただけますと幸いです。
バックアップに利用するプラグインは「All in One WP Migration」を利用しましょう。
バックアップはWordPress管理画面左メニュー「All in One WP Migration」→エクスポート→エクスポート先→ファイル、の手順で可能です。 - CSV一行目は必ず「post_id」や「post_name」など半角英数字の「データ名」にしてください
- 既存記事データの上書きインポートの場合「post_id」は必須です。こちらのIDを元に記事データを判別し上書きできます。(「post_id」は記事一覧管理画面からご確認いただけます)
- 「post_id」を空白にした行のデータは新規追加として処理されます。(新規で記事ページが生成されます。)
- セルを空白にした箇所はインポート時にデータの削除として処理されてしまいますため、上書きの際にデータを変更・削除したくない箇所は必ず既存のデータ(テキストデータ等)と同じデータを必ず入力しておいてください。
- 上書きインポートの場合、あらかじめCSVフォーマットから項目の列を削除しておいていただけますとその列のデータは削除されません。(要は変更したくない項目は列ごと記述せず、上書き編集したい部分だけ列を追加しておけば大丈夫です)
- 上書きインポートの場合、全ての列項目を用意する必要はありません。上書き編集したい列項目のみ記述があれば大丈夫です。ただし「post_id」は必須ですのでご注意ください。
- チェックボックスなど値(データ)が複数必要なデータについては、「data1,data2,data3」のようにカンマ「,」で区切って入力してください。
- インポート件数が多いとエラーが起こってしまう可能性があります。エラーが起こった際は一度300件ずつなどに分割してインポートをお試しいただけますと幸いです。(※根本的な解決にはサーバーから設定が可能なphp.iniの修正が必要です)
CSVインポート前にバックアップは必ず必要
必ずインポートする前にバックアップを取得してから作業していただけますと幸いです。
バックアップには「All in One WP Migration」というプラグインがおすすめです。
バックアップはWordPress管理画面左メニュー「All in One WP Migration」→エクスポート→エクスポート先→ファイル、の手順で可能です。
上記手順完了後、バックアップファイルがデスクトップ等にダウンロードされます。
Advanced Custom Fieldsプラグインでの複数選択系データのインポートがうまくいかない場合の対処法
Advanced Custom Fieldsプラグインでカスタムフィールドを設定している中で今回のCSVインポートでの一括処理をしようとすると、チェックボックスなどの複数選択系のデータがうまくインポートされないという問題に直面するかと思います。
なぜこのような問題が起こるかというと、Advanced Custom Fieldsのチェックボックスはデータベースに保存される値がa:1:{i:0;s:0:””;}のような値になってしまうためです。
例えば以下のイメージでAdvanced Custom Fieldsのチェックボックスデータを設定しているとします。
- red:赤
- blue:青
- green:緑
上記の選択肢から赤と青を選択した場合、データベースに保存される値はa:1:{i:0;s:0:”red”;i:1;s:1:”blue”;}のような値になってしまいます。
CSVファイルのシートにに「red,blue」といったようにカンマ区切りで指定すればいけそうですが、データベースに保存されている値がおかしいため、これでは上手く読み込まれません。
「red,blue」ではなく「a:1:{i:0;s:0:”red”;i:1;s:1:”blue”;}」と指定すれば上手く読み込まれますが、いちいちこの変換作業を行うのは大変なので、Really Simple CSV Importerのフィルターフックである「really_simple_csv_importer_save_meta」を利用してAdvanced Custom Fieldsの値をパースして対応します。
以下のコードをfunctions.phpにコピー&ペーストしてください。
/*
* 【WordPress】Really Simple CSV ImporterでACFのチェックボックスの値を読み込む
* */
// チェックボックスの複数項目処理
function change_value_separater($meta, $post, $is_update) {
foreach ($meta as $key => $value) {
if (strpos($value, ',') !== false) {
$_value = explode(",", $value);
$meta[$key] = $_value;
}
}
return $meta;
}
add_filter('really_simple_csv_importer_save_meta', 'change_value_separater', 10, 3 );
これで先ほど解説した手順通りにシートに「red,blue」といったようにカンマ区切りで入力してCSVをインポートするとデータが反映されます。
まとめ
WordPressで大量の記事データを一括でインポートする方法についての解説を終わりにします。
当記事は例えば一括で100件以上の投稿データをWordPressに反映させたい場合に無料でそれを実現できるかなり役に立つ内容となっております。
実際の実務で重宝するといっても過言ではないかと思いますので、よろしければぜひお仕事でご活用いただけましたら幸いです。
お気軽に皆さんのご要望をお聞かせください!
どんなに些細なことでも構いません!よろしければ記事や当サイトへの「こんな記事があったら仕事とかで役に立つな〜」や「こうだったらもっと役に立つのに!」といったようなご要望等をお気軽にお聞かせください!今後のサービス改善にお役立てさせていただきます!
例1)Reactの技術記事を書いてほしい!
例2)WordPressの使い方とかを初心者向けに解説してほしい!...など