WooCommerceを使っていると顧客データや注文データをCSVでエクスポートしたいというご要望が多いのですが、日本語エクセルはCSVを開く時に文字コードを強制的にShift-JISにしてしまいます。
その為、データを開くと文字化けして訳が分からないデータとなってしまいます。
今回有料プラグインをカスタマイズして、日本語環境でも文字化けせずにエクスポート出来る方法をご紹介します。
Contents
なんで文字化けするのか?
一言でいうと日本語エクセルの糞仕様 互換性を大事にした仕様が原因。
WEBの世界では文字コードにUTF-8を使います。WooCommerceなども例外ではなく文字コードには標準的なUTF-8が使われます。
最近ではメールやWEBなどインターネット上の文字コードはUTF-8が標準なのですが、日本語のエクセルだけは文字コードになぜか昭和時代のShift-JISを使います。
ExcelもUTF-8に対応してはいますが、UTF-8でエンコードされたCSVファイルをそのまま開くと問答無用でShift_JISとして開いてしまうので文字化けしてしまうのです。
CSVファイルを変換したりすることで文字化けは解消可能ですが、そんな手間をお客さんに掛けさせるわけにも行かないので、最初から日本語エクセルに対応したShift-JISでデータをエクスポートさせよう!
というのが今回の趣旨です。
有料だけど使い勝手の良い Woocommerce quick export plugin
今回使ったのは有料ですが、非常に使い勝手の良いプラグイン
「WooCommerce Quick Export Plugin」通称WQEP
無料で使える海外製プラグインもあるのですが、データの抽出範囲を設定出来なかったり、自動でのエクスポートがないなど実用に耐えるものが中々見つからなかったので今回はこちらのプラグインを使用しました。
ENVAT MARKET で20ドル程で購入できます。
プラグインの日本語化
プラグインをインストールして有効化する方法は割愛。
標準では英語表記なのでまずは日本語化します。
以下のzipファイルを解凍して出来る2つのファイル wqep-ja.po と wqep-ja.mo をプラグインフォルダ内のlangageフォルダにコピーします。
/wp-content/plugins/woocommerce-quick-export-plugin/languages/
翻訳はiT-STUDIO
(Ver2.4.2で確認していますが、ノークレーム、ノーサポート、自己責任でお願いします。)
これで全て日本語表記となります。
管理画面 Woocommerce → レポートメニューにクイックエクスポートが追加されます。
日本語サポートをカスタマイズ
このプラグイン、標準ではUTF-8とUTF-16、そしてGBK(中国語)でのエクスポートをサポートしています。
この中国語部分を変更して日本語(Shift-JIS)でのエクスポートを可能にします。
以下のPHPファイルを編集します。
woocommerce-quick-export-plugin.php
539行目あたり
<option value="shift_jis" <?php if(get_locale() == 'zh_CN') echo 'selected="selected"'; ?> ><?php _e('Chinese Excel Support (gbk)', 'wqep'); ?></option>
1766行目あたり
elseif($this->export_settings['wqep_exportformat']=='shift_jis') { header ( 'Content-Type: application/vnd.ms-excel'); die(iconv("UTF-8","shift_jis//TRANSLIT",$this->exported_data)); } else
automated.php
289行目あたり
<option value="shift_jis" <?php if(get_locale() == 'zh_CN') echo 'selected="selected"'; ?> ><?php _e('Chinese Excel Support (gbk)', 'wqep'); ?></option>
323行目あたり
elseif($this->export_settings['wqep_exportformat']=='shift_jis') { $ct = 'application/vnd.ms-excel'; $data = iconv("UTF-8","shift_jis//TRANSLIT",$this->exported_data); } else { //utf8 }
上記2つのファイルを変更することで、日本語Shift-JISでのファイルエクスポートが可能になります。
実際にやってみる
クイックエクスポートでエクスポート形式を「日本語エクセル(Shift_JIS)」に変更してエクスポート実行。
結果はご覧の通り
バッチリ日本語エクセルでも読めますね。
このプラグイン、ファイルのエクスポートをスケジュールしてメールで送信なんて事も出来るので一度設定してしまえば、決まった曜日、時間にデータのエクスポートを自動出力してくれる便利ものなのです。
ちょっとしたカスタマイズで大分使い勝手が良くなりました。