[WordPress]Welcartへの商品データ一括登録への道

モール店から本店へ! WordPress+Welcartで本店を構築したとき、最初の山場は、商品データの移行をいかに楽にできるか。 a0002_010811

■準備編

WelcartではCSVでの「商品一括登録」機能を用意してくれています。 ここでは、その機能をテストしてみました。

テスト手順
1.商品を登録します。
2.「商品データ出力」をします。
3.「商品一括登録」して、登録できている事を確認する。

1.一括登録すると「ファイルを保存できませんでした」ってエラーが表示される。
wp-contes/uploadsフォルダにcsvファイルがアップロードされるが、そもそもフォルダが無かった(^^;
$mkdir uploads $chmod 777 uploads
2.「商品データ出力」した
3.「商品データ出力」したデータの一行目が項目名なので、削除した。
4.「商品データ出力」したデータを「商品一括登録」したけど下記のエラーが出た。 Successful 0 lines, Failed 1 lines. 1/1件を処理完了 No.1 Post-ID 18 does not exist in the database. “18”,”1″,”テスト商品002のしょうさいですよ”,”これはテスト商品002″,””,”publish”,”open”,””,”これはテスト商品002″,”2014-03-06 23:04:30″,”test002″,”これはテスト商品002″,”5″,”0″,”0″,”0″,”0″,”0″,”0″,”0″,”0″,”0″,”0″,”0″,”3;2″,””,””,”sku-test002-01″,”sku-test002-01だよ”,”1000″,”500″,”1″,”0″,””,”0″,”色”,”0″,”1″,”あか^M;あお”,”サイズ”,”0″,”0″,”big^M;middium^M;small”
5.「商品データ出力」したデータのPostIDとPost Author(18と1)を削除した。
6.「商品データ出力」したデータを「商品一括登録」した Successful 1 lines, Failed 0 lines. 1/1件を処理完了 終了しました。 無事登録できました。

※注意:ファイルのエンコーディングはShiftJISです。

■データ移行編

今回は、楽天さんからのデータを題材に確認を行います。 商品データはCSVで出てきますが、項目の並びは、Welcartが期待している並びと当然異なります。

今回はPerlを使って、Welcart用のデータに変換するプログラムを作成しました。

注意点)
1.入力されるデータフォーマットがShift-JISです。 また、Welcartへ渡すデータもShift-JISです(^^;
2.CSVの処理でめんどくさいのは二重引用符(ダブルコーテーション)の中にある、カンマの処理ですね。 今回は「Text::CSV_XS」を利用しました。

use Text::CSV_XS;
my $csv = Text::CSV_XS->new({binary=>1});
   :
#ShiftJISで入出力を行います。
binmode( STDIN,  ":encoding(shift_jis)");
binmode( STDOUT, ":encoding(shift_jis)");
while( my $line = <STDIN> ) {
    chomp( $line );
    my @dat = ();
    my $status = $csv->parse( $line );
    my @values = $csv->fields();
   :
    my $buf = join( ",", @dat );
    print $buf . "¥n";
}

{binary=>1}は日本語を扱う時に指定が必要です。
3.カテゴリーIDの設定が必要 Welcartでは商品のカテゴリーをカテゴリーIDの並びで「3;5」なように指定します。

※カテゴリーIDはカテゴリーの「編集」リンクで「category=xx」と出てくる数値を言います。 カテゴリーIDの詳細はこちらを参照してください。 カテゴリーIDの確認方法はこちらを参照してください。

Welcartではカテゴリーは「商品」を親として、その配下に指定をしていきます。 そのため、カテゴリーの指定も、「2;xx;yy」なように指定しました。

※「2」は、今回の環境では商品はカテゴリーID=2になっていたため。。 今回大変だったのは、元データはカテゴリー名称で来るので、カテゴリー名称とカテゴリーIDの対応表を作成するところ。 こればっかりは手作業で変換テーブルを作成しました。

my %hash_category = (
    "カテゴリー1" => 5,
    "カテゴリー2" => 12,
    "カテゴリー3" => 13
}
  :
my $category1 = $hash_category{$categoryName};
  :

4.データを変換します。 今回は標準入出力を使用して変換するプログラムにしました。 作成されたデータを「一括登録」で読み込んでみてくださいませ(^^)v

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です