[WordPress]Welcartへの商品データ一括登録への道
モール店から本店へ! WordPress+Welcartで本店を構築したとき、最初の山場は、商品データの移行をいかに楽にできるか。
■準備編
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」を利用しました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
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の対応表を作成するところ。 こればっかりは手作業で変換テーブルを作成しました。
1 2 3 4 5 6 7 8 |
my %hash_category = ( "カテゴリー1" => 5, "カテゴリー2" => 12, "カテゴリー3" => 13 } : my $category1 = $hash_category{$categoryName}; : |
4.データを変換します。 今回は標準入出力を使用して変換するプログラムにしました。 作成されたデータを「一括登録」で読み込んでみてくださいませ(^^)v