カスタム投稿タイプに記事を一括登録する備忘録

In: Web Design, デザイン

先日、WordPressで構築しているWebサイトに、数十~百件ある商品を登録する必要性がありました。
手作業でできる量といえば量なのですが、元データをお客様がExcelデータでご用意でしてくださったこともあり、貼り付け間違いやコピーミス等々を考えるとこのデータを利用しない理由がありません。

過去にも何度か一括で記事を登録するという作業は行ったことがあったのですが、毎回自分の走り書きメモを解読している気がしたので、備忘録としてこの記事に纏めておこうと思います。

目次

  1. 使用プラグイン
  2. 準備
  3. 登録方法
  4. まとめ

使用プラグイン

大前提として、数十~百件ある記事を通常の投稿タイプ(post)の配下に所属させることはないと思いますので、「カスタム投稿タイプ」を使用しており、且つ、「カスタムフィールド」で複数の項目を使用するものとします。

カスタム投稿タイプは私はプラグインを使用せずfunctions.phpに書き込むので、使用するプラグインは下記2つ。

[ Smart Custom Field ]
WordPressでカスタムフィールドを作成する場合、私は大抵こちらのプラグインを使わせていただいてます。
Advanced Custom FieldsCustom Field SuiteCustom Field Templateなどもありますが、圧倒的に見た目がすっきりしていて好みだから。
機能全部盛り、は個人的に避けたいのでとても丁度いい。

[ Really Simple CSV Importer ]
プラグインの名前通り、とてもシンプルにCSVをWordPressにインポートできるプラグイン。

上記2つは作者さんが日本人で、さらにSmart Custom Fieldを使用した際のReally Simple CSV Importerの使用方法を作者さんが記事にされているというのが決定打。
親和性から考えてもこの2つを組み合わせて使います。

準備

0.カスタム投稿を作成

例として下記カスタム投稿を作成しました。

カスタム投稿名:fruit
タクソノミー :true
タクソノミー名:ctfruit
使用するターム:
green,orange,red,yellow

1.SmartCustomFieldで、登録したいカスタムフィールドを作成

使用するタイプを選び、名前は半角英数で入力、ラベルは和名でも大丈夫。
表示先を選んで登録しておきます。

今回はカロリーを登録するテキストのフィールドを登録しておきます。

2.CSVファイルを作成

まずCSVファイルを用意しなければなりませんが、後々ExcelをCSVとして書き出す際に絶対に忘れてはならない作業があります。
保存する際に文字コードを「UTF-8」にすること。
Excelを保存する際に、「Webオプションツール」があり、「エンコード」からUTF-8が選択できれば良いのですが、なかったり、よくわからない人はGoogleスプレッドシートか、LibreOffice(公式推奨)を使用して下さい。
ExcelでそのままCSVファイルで保存しても登録の際にエラーが出ますし、公式にも「エクセル形式のCSVファイルとは互換性がなく、推奨しません。」と明記されています。
私はGoogleスプレッドシートを使用しています。

まず各列1行目は、出力先の指定をします。

D1の「tax_{custom_taxonomy}」はカスタム投稿タイプでカテゴリをtrueにしたなら指定を。
F1がSmart Custom Fieldで作成したカスタムフィールドの指定です。
Smart Custom Fieldで作成したカスタムフィールドへの出力は頭に「scf_」をつけます。

2行目からは記事の内容になり、A2にはカスタム投稿名を指定し、D2の登録したいタームが複数ある場合はカンマで区切って入力します。

今回のフルーツの例だと…。
D1「tax_ctfruit」
F1「scf_fruit-cal」

post-statusやpost-idなどは適宜使用し、カスタムフィールドが複数ある場合は列を増やして下さい。
Really Simple CSV Importerの公式サンプルはこちら

全ての入力が完了したら書き出しますが、3つ必須の注意点がプラグイン内にあります。

  1. 文字セットにUTF-8を選択してください。
  2. フィールド区切りに “,” を使用してください。
  3. 全てのテキストセルを引用符で囲ってください。

Really Simple CSV Importer

1はこの節の最初にも触れましたが、UTF-8である必要性があります。
2 は、CSVを書き出す際に「カンマ区切りのCSV」として書き出せるのですが、後述を参照。
問題は3で、通常書き出しても引用符「”」では囲まれていないので、自力でどうにかする必要性があります。

私の場合はまず、タブ区切りのCSVを書き出し、そのファイルをSublime Textで開きます。
Sublime Textの機能を使ってタブを全選択したりして、全ての項目を引用符「”」で囲まれた状態に一括置換しています。
※カンマ区切りでCSV保存していると、タームを複数指定した際のカンマも選択されてしまうので、タブ区切りのCSVを使用しています。

下記の様なデータができれば、完成です。

“post_type”,”post_name”,”post_status”,”tax_ctfruit”,”post_title”,”scf_fruit-cal”
“fruit”,”apple”,”publish”,”red,yellow”,”りんご”,”54 kcal”
“fruit”,”banana”,”publish”,”yellow,green”,”バナナ”,”86 kcal”
“fruit”,”orange”,”publish”,”orange”,”みかん”,”44.9 kcal”

登録方法

プラグインのReally Simple CSV Importerが有効になっていれば、WordPress管理画面→ツール→インポート→「CSV」が有効になっているはずですので、こちらからインポートするだけ。
データに問題がなければ、指定の場所にインポートできるはずです。
エラーが出た場合はまず、エンコードがUTF-8になっているかを確認して下さい。

まとめ

CSVのファイルを用意するのが意外と手間ですが、後々post-idで管理できれば上書きして書き換えることも可能なので管理する方法としてはひとつの手かもしれません。
全てのテキストセルを引用符で囲う作業は、LibreOfficeだと必要ないのかもしれないのですが、未検証です。

Star Rating

記事はあなたのお役に立てましたか?
もしよろしければ、星5つ満点で評価してください。
評価数:5 /平均点:3.20

12345

1← ★★★★★ →5

Loading...

Share

Contact me...

ご用件(必須)
会社名/団体名
お名前(必須)
メールアドレス(必須)
お問い合わせ内容

お問い合わせありがとうございます。
読み物に関していただいたご質問へのお返事は、基本的にはお約束しておりません…。ご指摘いただいたものに関しては、再調査等を行って記事との関連性を精査し、記事内にてご報告させていただく場合もございます。