WordPressのCSVアップロードは、すごく便利です。通常、ブラウザで遷移しながら投稿していくため、結構時間がかかってしまいます。特に、重いサーバーの場合は大変です。そんなときに役に立つのがCSVでのアップロードです。今回、2,000件以上の投稿データをアップしたので、その手順をメモしておきます。
目次
経緯
お客様からの要望で、データベースサイトを構築しました。サイボウズ系のDBで構築されているものをWordPressで公開されるというお話で、そのままでは構築できないため、CSVでアップロードすることにしました。気軽に考えていたものが意外と手間取ってしまいました。最終的には、2,000件以上のアップロードができるようにしましたので、事の顛末と手順を備忘録として公開します。
ハマったこと
プラグイン選定
CSV関連のプラグインは、比較的多くあるため、比較的簡単にできるのかなと思ってました。しかし、意外とピタッとハマるプラグインがありませんでした。
- 試したプラグイン
- WP Ultimate CSV Importer
いろいろ試しても、カスタム投稿でのアップロードができなかった。有料版ならうまく行きそうかと思いましたが、購入までは至りませんでした。 - Really Simple CSV Importer
カスタマイズすれば、いろいろできそうなのですが、途中で諦め - CSV Importer
すごくシンプルなので、最初は使えないかなと思ってましたが、最終的にこれでアップロードできるようになりました。
アップロードするとき
Web開発の話というよりかは、エクセルの話も絡みながら、以前から知っていた知識であるにもかかわらず、久しぶりのCSV処理で思い出したことも多いです。なかなかすんなりアップロードできず、いくつかソフトを利用しながら、進めました。やはり盲点は、エクセルです。エクセルのCSVは、意外と癖があるんです。どんな癖かというと、
- 文字コードがShiftJIS!
- 基本的には各カラムは、改行が入った場合はダブルコーテーションで囲われるが、改行がないものはダブルコーテーションで囲われない。
一つ目は、よくある話です。別のツールで変換してあげないといけないです。2つ目は、知っていたものの、改めて気付かされました。これも別のツールで解決しました。
手順
エクセルの下準備
エクセルを準備します。
1行目のカラム名に注意です。
- csv_post_type
投稿タイプを記入します。- post
投稿です。 - page
固定ページ - カスタム投稿
カスタム投稿名を記入すると、カスタム投稿としてアップロードされます
- post
- post_status
投稿のステータスです。publishは、公開済みで即アップされます。draftだと、下書きでアップされます。 - csv_post_parent
親の投稿を決めることができます。この辺はうまくできてます。 - csv_post_slug
スラッグも決められます。 - wpcf-・・・
カスタムフィールドのプラグインのTypesを使っているので、これが先頭に付きます
なお、画像もアップができます。これは意外と便利でした。サイトに画像をアップしておいて、URLを指定してあげれば、取り込んでくれます。ただし、ファイル名の処理は意外と面倒で、エクセルの関数を駆使しながら、URLを準備(2,000件あるので、手作業では無理)
CSVの出力とその後の処理
エクセルでCSV出力します。余談ですが、エクセルでCSVするときの警告メッセージが面倒ですね。
エクセルのダブルコーテーション問題の解決
前述した通り、CSVにした場合改行が付きません。使ったプラグインのCSV Importerは、ダブルコーテーションがないとアップロードサれないので、Cassava Editorというものを使ってダブルコーテーションをつけてあげます(これは、どんなツールでも大丈夫です)
WPに読み込む際に、UTFでないと行けないので変換
これも前述のエクセルさんの問題であるShiftJIS出力しかないため、お気に入りのEmEditorで変換してあげます。(これも、どのツールでも大丈夫です)
めでたくCSV Importerでアップ
事前に、前述の画像をアップしておいてください。その後、アップですが、弊社のサーバー環境が貧弱なのか、2,000件アップは途中で落ちてしまいました。なので、CSVを分割して3回に分けてアップすると、成功です!
WordPressについては、いろいろと試すことも多いので、記事を増やして行く予定です。