はい、ごめんください。
最近はホームページの制作もしている小杉です。おかげで、WordPress ネタがたまってきました。
複数の記事を CSV で WordPress に一括インポートする方法は比較的有名ですね。エクセルでまとめた記事を CSV に書き出し、それを「Really Simple CSV Importer」でインポートする方法です。
参考:Really Simple CSV Importer 日本語解説&カスタマイズ例
ただ、各項目は半角ダブルクォーテーション(” ←コレ)で囲む必要があり、エクセルの CSV 書き出しでは囲んでくれません。
Windows なら、ダブルクォーテーションで囲んで書き出すためのアドインもあるのですが、Mac だとそうもいかない。
色々格闘しましたが、結果的には正規表現の使えるテキストエディタ(Sublime Text や Atom など)を使って、サクッと置換するのが一番簡単だという結論に至りました。
そうやって投稿までなんとかするための手順をまとめました。備忘録とも言います。
CSV で一括インポートするためのプラグイン
CSV でのインポートが大前提の話なので、まずは使えるようにしておきましょう。
私は Really Simple CSV Importer というプラグインを使っています。
公式プラグインなので、[プラグイン]→[新規追加]から「Really Simple CSV Importer」を検索したほうが早いでしょう。インストールして、有効化します。
そうすると、[ツール]→[インポート]から CSV を選べるようになり、以下のようにファイルを選択できるようになります。
この画面の、「サンプルCSVファイルをダウンロード: 」とある「csv」をダウンロードすると、サンプルファイルが手に入ります。(右クリックすると「リンク先を保存」などでダウンロードできます)
サンプルファイルをエクセルで開いた時の注意点
sample.csv をダウンロードできたら、エクセルで開くことになりますが、心の絶叫とともに、文字化けに悩まされるかもしれません。
原因は、文字のエンコードが UTF-8 になっているためです。
その場合は、一旦テキストエディタなどで開いて Shift-JIS に保存しなおしてから、エクセルで開いてみてください。
文字化けしていなければ、問題ありません。
ちなみに、サンプルファイルが英語なのは、文字化けしているわけではありません。
文字化けするのは日本語が含まれているためなので、サンプルファイルを開いても問題ない可能性のほうが高いですが、日本語で編集した CSV ファイルを開く際には、このことを思い出してくださいね。
各項目に入力する内容
せっかくエクセルを使うのですから、エクセルの機能も使いながら入力しましょう。
post_id
記事のIDが入ります。サンプルは空の行もありますが、入力する記事が決まっていたら、番号を振っておく方がオススメです。
[投稿]→[新規追加]で「プレビュー」にマウスを乗せると最新の ID がわかるので、その数値を A2 に入力したら、以降は A2+1 で良いですね。
post_name
いわゆる「スラッグ」です。ID =スラッグの場合は、B2 以降には =A2 といれておきました。
個別のスラッグを使いたい場合は、そのように入力しておきましょう。
post_author
存在するユーザー名を入れておきましょう。
経験はないですが、間違っていると余計なデータを作ってしまうか、エラーになるかと思われます。
すべての記事にユーザー名を設定しておくと間違いありません。
post_date
投稿日時を YYYY/mm/dd HH:ii の形式で入れておきましょう。特に指定のない場合は、インポート時刻が適用されると思われます。
なお、ステータスが「下書き」の場合、この日時は無視されます。
「この日を公開日時としておきたい」という場合は post_status にご注意ください。
post_type
ブログなら「post」、固定ページなら「page」です。
それ以外はカスタム投稿タイプで設定した投稿タイプが使えます。
post_status
インポートした後で確認したいという場合は、「private(非公開)」がオススメです。
特に投稿日時の指定がなければ、「pending(レビュー待ち)」や「draft(下書き)」でも良いでしょう。
公開済みにしておきたい場合は「publish」を設定しておきましょう。
post_title
記事のタイトルが入ります。機種依存文字は避けておいたほうが良いでしょう。
post_content
記事の本文が入ります。同じく、機種依存文字は避けておいたほうが良いでしょう。
私の場合、短い本文をインポートしてから写真を設定するという作業を行っていますので、改行を除いてインポートしたあとで、記事を確認しながら適宜改行しています。
最初に使う画像のイメージタグが入っているなら、Auto Post Thumbnail と組み合わせると、サムネイル設定まで対応できるかもしれません。未確認ですが。
post_category
カテゴリー名を入力します。半角カンマ(,←コレ)で複数のカテゴリーを設定できます。
post_tags
タグ名を入力します。カテゴリーと同じく、半角カンマ(,←コレ)で複数のタグを設定できます。
custom_field
カスタムフィールドを扱えます。
ここは上級者向けなので、作者のページをご覧ください。
参考:Really Simple CSV Importer が Smart Custom Fields に対応しました
エクセルから CSV に変換して保存する
エクセルで、上記のルールに従って記事を書いたあとは、CSV に変換して保存します。
「UTF-8」での書き出しが前提ですが、状況によって区切り方法が違います。
Windows なら Excel CSV I/O も使ってみては?
Windows で エクセル 2007 以降を使っているなら、便利なアドインがあるようです。各セルの内容をダブルクォーテーション(” ←コレ)で囲んで、半角カンマ区切りで書き出すことができます。
参考:Excel CSV I/Oの詳細情報 : Vector ソフトを探す!
Mac でも導入まではいきましたが、やっぱり動きませんでした。
Windows なら、このアドインでサクッとダブルクォーテーションのついた CSV ファイルを取得できそうですね。
それ以外は正規表現の置換でがんばろう
エクセルのバージョンが違ったり、そもそも Mac でエクセルを使っている場合には、お世話になっているテキストエディタに頼るのが一番です。
正規表現を使えることが前提なので、Sublime Text や Atom などで対応できます。
エクセルから半角カンマではなく「タブ」で区切って生成した CSV ファイルを、これらのテキストエディタでひらき、以下のように置換します。
対象:
([0-9]*)\t([0-9]*)\t([^\t]*)\t([^\t]*)\t([^\t]*)\t([^\t]*)\t([^\t]*)\t([^\t]*)\t([^\t]*)\t([^\t]*)\t([^\t]*)\n
変換:
"$1","$2","$3","$4","$5","$6","$7","$8","$9","$10","$11"\n
タブのままなのは、もし文中に半角カンマが入っていたら対応できないためです。逆に、本文中にタブが含まれていたら、意図しない状況になるかもしれません。
その際は臨機応援に編集してくださいね。
これで、インポートできる CSV の準備ができました。
インポートしてから間違えた!と思ったら
[ツール]→[インポート]→「CSV」からサンプルをダウンロードした画面を表示し、作成した CSV を選んで[ファイルをアップロードしてインポート]を行ないます。
しばらく待っていると、インポート結果が表示されます。
エラーになることも多いので、どの記事がエラーになったかを確認しましょう。
機種依存文字が文字化けを招いていたり、カンマが足りなかったり、ダブルクォーテーションが入っていなかったりする場合があります。
その場合、修正した CSV をアップロードしてインポートすれば良いのですが、post_id がすでに存在するなら、その記事は上書きされます。
エラーになった!
カテゴリー間違えた!!
という場合でも、post_id が入っていれば何度でも直せます。
カテゴリーを間違えると、不要なカテゴリーが増えるので、あとから編集するのも忘れずに。
まとめ
- Really Simple CSV Importer を使おう
- 正規表現の使えるテキストエディタを用意しておこう
- 文字エンコードは UTF-8 で
- エクセルでゴリゴリ作ったら CSV(タブ区切り)として書きだそう
- テキストエディタで、タブをカンマとダブルクォーテーションに置換しよう
- インポートしたあとの修正して、再度インポートした場合、post_id で上書きされる
この流れで投稿はできたのですが、次の確認作業が待っている今日このごろです。
最近は WordPress 初心者向けの、丁寧な本が増えてきた印象。カスタマイズ本はある程度仕組みのわかる、脱初心者にオススメです。
それでは、ごめんください。