記事をCSVでまとめて登録「Really Simple CSV Importer」を使ってみよう!

別で運用してた記事や画像が300件以上…。これWordpressに手入力しないといけないのかな…う~ん…
手入力してたら、いくら時間あっても足りなくなっちゃうね。CSVとプラグインを使って、まとめて登録していきましょ!
今回は別のCMSで運用していたデータ、これから新規で一気に記事を入れたい場合など、これから記事や画像を登録していきたい向けの内容になります。
メモ
使用するプラグイン「Really Simple CSV Importer」は、カスタム投稿・カスタムフィールド(Advanced Custom Fields)もサポートしているのでとても便利ですが、最終更新: 5年前と古いためプラグインに不安があるなら、データ登録が終わったら停止または削除してください。

1下準備

今回データ移行に使う「Really Simple CSV Importer」を、管理画面のプラグインから有効化しておきましょう。 管理画面の「ツール」→「インポート」に進み、CSVインポーターの実行から「サンプルCSVファイルをダウンロード: csv」をダウンロードします。 ※投稿にカスタム投稿やカスタムフィールドなどを使用する場合、Wordpressに設定しておきましょう。

2CSVファイルを編集しよう

CSVファイルの編集は、ExcelまたはCassava Editor(フリーソフト)がオススメです。 サンプルCSVファイルを開いて、1行目にかかれたタグはカスタムフィールドがある場合、編集が必要になります。

1行目のタグについて

サンプルCSVの1行目タグを見てみましょう。
post_id 新しい記事の場合は空白またはなし、すでに登録した記事を編集する場合は記事のIDを入れます。
post_name 投稿のスラッグ、空白またはなしでもOK
post_author 投稿するユーザーのIDを指定
post_date 記事の日付を指定できます。 入力例:2020/02/07 0:00:00
post_type 投稿の種類を指定します。 投稿「post」、固定ページ「page」、カスタム投稿「カスタム投稿タイプ名」
post_status 公開や下書きなどの投稿ステータスの指定。公開の場合は「publish」
post_title 記事のタイトル
post_content 記事の内容。HTML可、画像を表示させる場合はimgタグを使用します。
post_category 投稿(post)カテゴリーのスラッグを指定。複数の場合はカンマ区切り 入力例:family,event,diary
post_tags 投稿(post)タグのスラッグで指定。複数の場合はカンマ区切り 入力例:tag1,tag2,tag3
custom_field カスタムフィールドを設置している場合、1行目の「custom_field」をカスタムフィールド名に編集します
post_typeは必須項目です。
サンプルCSVの1行目に記載されていないものの、よく使うタグ
post_thumbnail アイキャッチ画像のURLを指定
tax_{taxonomy} カスタムタクソノミー(カスタム投稿タイプのカテゴリやタグなど)を指定。 例えばproduct_categoryというタクソノミーを設定した場合は「tax_product_category」と編集します。
その他にも使用できるタグがありますが、よく使いそうなものだけピックアップしました。 ※その他のタグは制作者様のサイト説明文をチェックしてみてください。
すべての項目を記載する必要はないので、必要なものだけ1行目に設定して利用します。
▼サンプル カスタム投稿productに記事を登録したい 記事タイトル、記事コンテンツ、カスタム投稿product、タクソノミーproduct_category、カスタムフィールドproduct_price、アイキャッチ画像を盛り込んだ場合

CSVデータは必ず「UTF-8」で保存する

CSVの編集が終わって、保存をする時には必ず文字コードを「UTF-8」で保存をします。 UTF-8で保存しない場合、インポートする際に「データベースに投稿を追加できませんでした。WP_Postオブジェクトがセットされていません。」とエラーが出て登録ができません。

3CSVデータをアップロードしよう

管理画面の「ツール」→「インポート」に進み、CSVインポーターの実行から編集したCSVファイルを選択して「ファイルをアップロードしてインポート」を行います。
手動で入力するよりは時間かからないものの、CSVファイルの編集が一番時間かかりますね。お疲れさまでした!

カスタムフィールドの画像

「Really Simple CSV Importer Media Plus」という派生プラグインを使うと、画像をカスタムフィールドに配置し、画像IDで表示ができるようになります。 ※Download ZIPでダウンロードしたものを、プラグインアップロードで有効化
<?php $image = wp_get_attachment_image_src(get_field('フィールド名'), 'full'); ?>
<img src="<?php echo $image[0]; ?>" alt="<?php echo get_the_title(get_field('フィールド名')) ?>" />
こちらのプラグインもぜひ活用してみてください。

その他:エラーメッセージ post_id

アップロードをすると「CSVファイルからの投稿タイプ値は、データベース内の既存のデータと一致しません。post_id: ***、post_type(csv): ihin-sorting、post_type(db): attachment」とエラーが出た場合は、post_idとアイキャッチ画像に当てられたidが被っている(細かく書くと違うけれど)ので、post_idを違うものに変更してアップロードまたは空白にしてアップロードしてみてください。
※エラーが出る条件は、post_id(事前にpost_idを指定して新規アップロードしたい)とアイキャッチ画像が設定されたCSVをアップロードする時

その他:エラーメッセージ タイムアウト

「Fatal error: Maximum execution time of 0 seconds exceeded in ****/wp-includes/class-wp-image-editor-imagick.php on line 362」 max_execution_timeは処理のタイムアウトなので、php.iniの設定を確認してみてください。0になっていれば無制限ですが、max_input_timeの値でタイムアウトしている場合があるので、こちらもチェックしてみてください。 php.iniで編集ができない場合は、.htaccessで編集がおすすめです。
<IfModule mod_php7.c>
  php_value post_max_size "32M"
  php_value upload_max_filesize "24M"

  php_value memory_limit "128M"

  php_value max_execution_time "120"
  php_value max_input_time "120"
</IfModule>
設置するサイトの環境に合わせて編集をしてください。 今回はよく使いそうな部分をコンパクトに説明した形なので、もっと深く使いたい場合は、ぜひ制作者様のサイト説明文を見てください。

その他:運用面でのポイント

post_idの部分を「空でアップロードすれば新規登録」「post_idを入れれば更新」といった感じですが、最初に空でアップロードした後に、1記事づつpost_idを確認してCSVに入力が面倒…
という時には、最初の新規登録の段階で、post_idを自分の都合のいいID番号を入れてアップロードでも利用できます。
(ただし、WordPressの仕様上、管理画面から何か投稿や固定ページを作成すると自動的にpost_idが付与されるので、それと被らないようにだけ注意)

便利なプラグインなので、ぜひ活用してみてくださいね!

この記事を書いている人
WEBデザイナー 小谷 優歌
WEBデザイナー 小谷 優歌
WEBデザイナーとして20年、中小企業を中心に年間80件近くのサイト制作・改善を行う。サイト制作にとどまらず、商工会でのセミナー講師や、中小企業へIT顧問・専門家として技術アドバイスを提供。 デザイン制作だけでなく「WEBやITを使って問題を解決したい」「結果を重視して取り組みたい方」へのウェブ活用のサポートを専門としている。