ホーム > 管理画面について > 商品一括登録機能を実装しました

商品一括登録機能を実装しました

2010 年 1 月 25 日

こんにちは。

CSVによる商品データの一括登録機能が実装されました。バージョンはDevelopment Version で、テスト段階という位置付けになります。本稼動中のショップではテストしないようお願いします。

データはCSV形式(SJIS)となります。カンマ「,」は使えません。
エクセルでデータを編集した後、改行を「<br />」に変換してCSV形式で保存してください。変換方法は後ほど説明いたします。
 

 
CSVデータの仕様
サンプルデータダウンロード(Collective_registration_items.xls)
白色=基本情報、青色=SKU情報、黄色=オプション情報

項目名 入力値 適用
商品コード 半角英数推奨 例)ABC1002
商品名 20文字以内推奨 例)ラメ入りハンドバック(ロング)
購入制限数 数値(整数) 0は無制限
ポイント率 数値(整数) 0はポイント付与せず
業務パック割引1-数 数値(整数) 0は未使用、「割引2-数」より小さく
業務パック割引1-率 数値(整数) 0は未使用、「数」を設定した場合は1以上
業務パック割引2-数 数値(整数) 0は未使用、「割引3-数」より小さく
業務パック割引2-率 数値(整数) 0は未使用、「数」を設定した場合は1以上
業務パック割引3-数 数値(整数) 0は未使用
業務パック割引3-率 数値(整数) 0は未使用、「数」を設定した場合は1以上
発送日目安 数値(整数) 0:未指定、1:即日、2:1?2日後、3:2?3日後、4:3?5日後、5:4?6日後、6:約1週間後、7:約2週間後、8:約3週間後、9:商品入荷後
配送方法 セミコロン(;)区切り数値 配送方法のID(配送方法の設定が先)
配送方法のIDとは、配送設定画面の配送名の前に表示されている数値です。
単一例)1 複数例)2;3
送料 文字列 送料名(送料の設定が先)
送料個別課金 数値(整数) 0:指定無し、1:指定有り
詳細ページタイトル 文字列 ?
詳細ページ本文 文字列 ?
詳細ページ抜粋 文字列 ?
表示状態 文字列 publish:公開済み、future:予約済み、draft:下書き、pending:レビュー待ち
公開日時 文字列 0000-00-00 00:00:00(セル書式を文字列にして入力)

空白の場合は現在日時が入ります

カテゴリー セミコロン(;)区切り数値 カテゴリーID(カテゴリーの設定が先)。カテゴリー「商品」は必須です、必ず含めてください。カテゴリー「商品」が3、カテゴリー「お勧め商品」が5の場合下のようになります。
例)3;5
タグ セミコロン(;)区切り商品コード オプション品の商品コード
単一例)AS0012
複数例)AS0012;SD1025
SKUコード 半角英数推奨 商品コード+枝番(SKUが1つの場合は商品コードと同じでもOK)
SKU表示名 文字列 例)Sサイズ
通常価格 数値 カンマ(,)は付けない(未使用は空白)
売価 数値 カンマ(,)は付けない
在庫数 数値 在庫管理しない場合は空白
在庫状態 数値 0:在庫有り、1:在庫僅少、2:売り切れ、3:入荷待ち、4:廃版
単位 文字列 例)枚
業務パック適用 数値 0:適用しない、1:適用する
オプション名 文字列 共通オプションに設定してある必要があります。

例)熨斗の指定

入力フィールド 数値 0:シングルセレクト、1:マルチセレクト、2:テキスト
必須項目 数値 0:否必須、1必須
セレクト値 セミコロン(;)区切り文字列 テキストフィールドの場合は空白
例)指定しない;必要;不必要

 
 
エクセルの変換方法
CSVデータでは文章中の改行を処理できませんので、エクセルのセル内で改行を使用した場合は全て「<br />」に変換しなくてはいけません。以下はその方法です。

  1. セルを全て選択します。
  2. 編集メニューから「置換」を選択します。
  3. 検索する文字列の欄で”Ctrl”+”J”を押します。これは改行を意味します。何も表示されません。
  4. 置換後の文字列の欄に<br />と入力します
  5. 「全て置換」をクリックします

この後CSVで保存してデータ作成完了です。

 
CSVのアップロード・一括登録
商品マスター・リストページにて「操作フィールド表示」をクリックすると、「商品一括登録」というリンクが現れますのでそれをクリックします。あとはファイルを選んで「登録開始」です。

一括登録で登録されなかったデータ(CSVの行)が有った場合はログが記録されます。問題なかった場合はログは白紙です。またログは一括登録を行うたびに上書きされます。ログの保存先は下の通りです。
usc-e-shop/logs/itemcsv_log.txt
 
 

関連記事
  1. pkopoko
    2010 年 1 月 25 日 18:46 | #1

    おつかれさまでした。
    毎日 楽しみに待っていました^^
    早速テストさせていただきます。

  2. webook
    2010 年 1 月 26 日 13:49 | #2

    nanbuさま
    待ちに待った一括登録機能の実装ありがとうございました。
    早速テストをと思ってインストールしたところ、
    Fatal error: Call to undefined function get_delete_post_link() in /home/77/sno3500/outletxxen.com/wp-content/plugins/usc-e-shop_dev/includes/usces_item_master_list.php on line 379
    こんなエラーが出てしまいました。こちら側に問題があるのでしょうか? ご確認いただけましたら幸いです。

  3. nanbu
    2010 年 1 月 26 日 14:14 | #3

    こんにちは。

    すみません。管理画面の商品リストページで「ゴミ箱」に対応したため、Wordpress2.9 以上が必要になりました。最新バージョンにアップグレードしてください。

  4. webook
    2010 年 1 月 26 日 17:16 | #4

    お返事ありがとうございました。
    2.9バージョンにアップグレードしました。
    Fatal error: Cannot use object of type WP_Error as array in /home/77/sno3500/outletxxen.com/wp-content/plugins/usc-e-shop_dev/functions/function.php on line 1912 というエラーが出ました。「戻る」と商品が登録されていました。改行コードを変えるとそのエラーが出ないようです。以上、いまのところのご報告です。ご確認いただけましたら幸いです。

  5. nanbu
    2010 年 1 月 26 日 17:34 | #5

    @webook さん
    ご報告ありがとうございます。

    行終端の改行処理が抜けていましたので修正しました。
    Development Version に反映させました。

  6. pkopoko
    2010 年 1 月 31 日 00:30 | #6

    登録した商品の削除をしたいのですが、こちらのCSVでは、できないということですかね・・?
    管理画面では、20品づつしか、削除できないので・・。良い方法ないですかね・・?

  7. nanbu
    2010 年 1 月 31 日 23:03 | #7

    こんにちは。

    商品マスターリストページで表示されている分が一括削除の対象となってます。表示する行数を変更できればいいのですが今のところそうはなっていません。

    応急処置として、以下の修正をすることで表示行数を変更することができます。ただ、あまり数を増やしすぎない方が良いかもしれません。

    usc-e-shop/classes/itemList.class.php 36行目

    $this->maxRow = 10;
      ↓
    $this->maxRow = 100;

  8. 今村聖子
    2010 年 10 月 20 日 23:21 | #8

    こんにちは。

    商品一括登録機能で質問です。
    SJISに変換するのが面倒なのと、詳細ページにカンマが利用できないのがちょっと不便なので、usces_item_uploadcsv()関数をSplFileObject を利用しUTF8のCSVファイルをインポートするように書き直して見ました。
    ローカルな環境(英語版WordPress/WelCart) では、うまくインポートできたのですが、ホスティングサーバ上(日本語WordPress/WelCart)では、「登録開始」をクリックした後、白紙状態になり、まったく動きません。
    CSVファイルは同じ物を使っており、WordPress/WelCartのバージョンも同じです。
    どこに問題があるのでしょうか?
    何かヒントを頂ければ幸です。

  9. uscnanbu
    2010 年 10 月 21 日 05:50 | #9

    こんにちは、今村さん。

    SplFileObjectは使ったことが無いのでなんとも言えないのですが、環境によって結果が違うのであればサーバー(ソフト)設定を疑うのが合理的かもしれません。文字コードであるとかphp のバージョンなど。

    仰るとおりCSVではカンマが使えませんし改行もbrを使うことしかできませんので、現在エクセルファイルをそのまま取り込めるよう仕様を変更しようとしています。もう少し時間がかかると思いますが完成しましたらまたこちらでお知らせしたいと思います。

  10. 今村聖子
    2010 年 10 月 23 日 08:52 | #10

    お返事ありがとうございます。
    ホスティングサーバ上のWordPress/WelCartをまるごとローカルな環境へコピーしてテストしてみました。
    ローカルな環境では動くんです。
    とういわけで、nanbuさんのおっしゃる通り、サーバ設定/PHPバージョンの問題みたいです。
    エクセルファイルをインポートできると、ほんと便利ですよね。
    でも、CSVインポートも残しておいて下さい。
    ファイルフォーマットの選択性があるほうが良いと思います。
    よければ、カスタマイズした usces_item_uploadcsv 関数送りますので、どなたかテストして頂けないでしょうか?

  11. uscnanbu
    2010 年 10 月 23 日 10:03 | #11

    @今村聖子 さん
    もちろん、CSV も残しておきますよ。

    取り込みテストこちらで試してみますので下記にお送りください。
    nanbuアットusconsort.com(アットは@)

  12. 今村聖子
    2010 年 10 月 24 日 00:45 | #12

    ファイル送りました。
    よろしくお願いします。

  13. uscnanbu
    2010 年 10 月 25 日 12:56 | #13

    頂いたファイルでテストしました。
    UTF8 のCSVの取り込みは問題ありませんでした。

    今回のテストでバグを一つ見つけました。
    データにタグを指定していた場合、一度取り込んだ後、商品を一旦削除してもう一度取り込もうとしたときにエラーが出ました。これは既にそのタグが存在した場合にタグの重複登録を避けるようになっていなかったためでした。次期バージョンで修正しますが、以下のように修正してみてください。

    function.php 2398行目辺り、$term_ids = wp_insert_term( $tag, ‘post_tag’ ); の下に1行追加

    if( !is_array($term_ids) ) continue;

  14. 今村聖子
    2010 年 11 月 3 日 23:42 | #14

    お返事が遅くなってすみません。
    無事にUTF8のCSVファイルのインポートが動いて良かったです。
    できれば、次期バージョンのインポートオプションの一つとして、取り込んで頂ければ嬉しいです。
    どうもありがとうございました。

  1. 2013 年 3 月 13 日 01:59 | #1
  2. 2014 年 5 月 11 日 22:36 | #2