APIを使って商品データを取得し、CSVデータへと変換した後、そのデータをWordPressへインポートさせる時に「CSV Importer」というプラグインを使うのですが、その覚書です。

CSVデータを作るときの注意点としてはコードはUTF-8(BOMなし)であることと、改行はLFに統一することなどがあります。

Excelだと文字コードがJISになるので注意が必要です。

XMLからCSVへの変換

楽天WebAPIのXMLからCSVへのPHP変換コードサンプル。
(PHP初心者ですので、参考程度にしてください。)

あらかじめ書き込みをするcsvファイルを用意しておく必要があります。
[html]
<?php
require_once("common.php");

// CSVファイル名の設定
$csvdata = "testrakuten.csv";

// CSVデータの初期化
$csv = "";

//リクエストパラメータ
$r_id = ‘123456789’; // あなたのアプリID
$r_aff_id = ‘0987654321’; // あなたのアフィリエイトID
$query = "ネックストラップ"; //キーワードを入れる
$query4url = urlencode($query); // URLエンコード

//リクエストURL組み立て
$url = "http://api.rakuten.co.jp/rws/3.0/rest?developerId=$r_id&affiliateId=$r_aff_id&operation=ItemSearch&version=2010-09-15&keyword=$query4url&format=xml";

//XMLパース
$rwsBuff = file_get_contents($url);
$rwsBuff = str_replace(‘header:Header’, ‘headerHeader’, $rwsBuff);
$rwsBuff = str_replace(‘itemSearch:ItemSearch’, ‘itemSearchItemSearch’, $rwsBuff);

$xml = simplexml_load_string ($rwsBuff);
$hits = $xml->Body->itemSearchItemSearch->Items->Item;

foreach ($hits as $hit) {
$itemname[] = h($hit->itemName);
$linkurl[] = h($hit->affiliateUrl);
if (strlen($hit->mediumImageUrl)) {
$imgurl[] = h($hit->mediumImageUrl);
} else {
$imgurl[] = "c_img/noimage.gif";
}
$price[] = h($hit->itemPrice);
$description[] = h($hit->itemCaption);
$shopname[] = h($hit->shopName);
//送料フラグ postageFlag 0:送料込
//1:送料別
if ($hit->postageFlag == 0) {
$souryou[] = "送料無料";
} else {
$souryou[] = "送料別";
}
$reviewnum[] = h($hit->reviewCount);
$reviewavr[] = h($hit->reviewAverage);
$reviewurl[] = "";
}

// 値段安い順番に並び替える(全部)
asort($price);

// CSVデータの作成

$csv =’"csv_post_title","csv_post_post","csv_post_categories","csv_post_date","csv_post_author","csv_post_slug","csv_post_type","custom_field_1","custom_field_2","custom_field_3","custom_field_4","custom_field_5","custom_field_6"’ . "\n";
foreach($price as $key => $value){
$csv .= "\"" . $itemname[$key] . "\"" . ",";
$csv .= "\"" . $description[$key] . "\"" . ",";
$csv .= "strap" . ",";
$csv .= "now" . ",";
$csv .= "Haru" . ",";
$csv .= ‘""’ . ",";
$csv .= "post" . ",";
$csv .= "\"" . $linkurl[$key] . "\"" . ",";
$csv .= "\"" . $imgurl[$key] . "\"" . ",";
$csv .= "\"" . $reviewnum[$key] . "\"" . ",";
$csv .= "\"" . $reviewavr[$key] . "\"" . ",";
$csv .= "\"" . $shopname[$key] . "\"" . ",";
$csv .= $price[$key] . "\n";
}

// CSVファイルを追記モードで開く
$fp = fopen($csvdata, ‘ab’);

// CSVファイルを排他ロックする
flock($fp, LOCK_EX);

// CSVファイルの中身を空にする
// 既存の内容に追記していく場合は不要
ftruncate($fp, 0);

// CSVデータ$csvの内容をファイルに書き込む
fwrite($fp, $csv);

// CSVファイルを閉じる
fclose($fp);

// 完了メッセージを出力する
echo("CSVデータの書き込みに成功しました!");

?>
[/html]

参考サイト:
API関連・・・・最安値複数ECサイト横断検索 light Ver.1.0リリース!と高速化の手法common.phpは横断検索のファイルをダウンロードしてください。
CSV関連・・・・PHPを使ってCSVデータを外部ファイルとして出力してみる

CSVデータ確認・編集

CSVデータの編集や確認には、無料のCassava Editorというソフトをベクターからダウンロードして使っています。

2013-02-21_15h44_16

UTF-8なのにファイルを開いて文字化けしている場合は、「ファイル>文字コード指定再読み込み>UTF-8」でファイルを読み直してみてください。

2013-02-21_15h39_04

CSV Importerのデータは一番上に項目を書いていきます。プラグインをダウンロードして同梱されているexamplesファイルのサンプルデータを見ると分かりやすいと思います。

  • csv_post_title(※)・・・・タイトル
  • csv_post_post(※)・・・・本文を書きます
  • csv_post_type ・・・・post, page,カスタムポストタイプを指定(通常の投稿はpost)
  • csv_post_excerpt・・・概要
  • csv_post_categories・・・・・カテゴリ(日本語ではなくslugのほうがよいと思います)
  • csv_post_tags・・・・タグ
  • csv_post_date(※)・・・・・日時(now,11/16/2009 0:00,1999-12-31 23:55:00など)
  • csv_post_author・・・・投稿者名
  • csv_post_slug・・・・スラッグ
  • custom_field_1・・・カスタムフィールド。custom_field_2,custom_field_3と増やせる
  • csv_ctax_(taxonomy name)・・・タクソノミー。カッコ内に自分の作った分類名を入れる。

2013-02-21_16h06_31

データが作成できれば、Upload fileから対象のcsvファイルを選び「Import」ボタンを押すだけです。

追記:
上記のサンプルコードでは30件しか商品を取得できません。
最大数取得するさいの参考になりそうなサイト。
楽天オークション商品検索APIを使ってみた