WooCommerce関連のプラグインを入れているとメールテンプレートが反映しない、または日本語化されない事象発生。
解決までの作業内容を記録したが、結果としてはプラグイン【Japanized for WooCommerce】やメールテンプレート、更には翻訳のpoファイルまで影響していた。
前提
WooCommerceでメールの宛名をフルネーム化、銀行振込対応や住所を日本用に対応する事などで、プラグイン【Japanized for WooCommerce】を導入。
またクレジット決済としてプラグイン【WooCommerce Stripe ゲートウェイ】を導入している。
しかしプラグイン【Japanized for WooCommerce】を使用し、【メールテンプレートの顧客名変更】のチェックを入れて有効にすると、テーマ配下のテンプレートを参照してくれないのは既存の問題としてある。
この事象は多数、Web上でも報告されている。
不具合内容
日本語化されない
最初は【Japanized for WooCommerce】の【メールテンプレートの顧客名変更】及び【銀行振込 (日本国内向け)】をチェックON。
この状態で銀行振込を行うと、着信したメールが一部日本語化されない。
銀行振込の場合は「注文保留メール」、Stripe決済の場合は「処理中の注文」が使用される。
「注文保留メール」のテンプレートを見ると、
「Thanks for your order. It’s on-hold until we confirm that payment has been received.」となっている。
ひとまず/wp-content/languages/plugins/内のpoファイル(woocommerce-for-japan-ja.po)に問題があると考え中身をチェック。
「Thanks for your order. It’s on-hold until we confirm that payment has been received. In the meantime, here’s a reminder of what you ordered:」
後半部分が追加されており、これでは日本語化されないのは当然である。
対策
【Japanized for WooCommerce】の【メールテンプレートの顧客名変更】のチェックを外すと元のpoファイル(woocommerce-ja.po)を参照するようで(/wp-content/languages/plugins/内)問題無く日本語化された。
フルネーム対応
【メールテンプレートの顧客名変更】のチェックを外す事により、メールのフルネーム対応がされないのでその対応。
子テーマのメールテンプレートが有効になるのでコピーを行い、
$order->get_billing_first_name()を
$order->get_formatted_billing_full_name()
に変更する。
クレカ決済の日本語化に不具合
今度はクレカ決済のメールに不具合。
今まで日本語化されていたが、【Japanized for WooCommerce】の【メールテンプレートの顧客名変更】のチェックを外すと日本語化されない。
とりあえずpoファイルをチェックする。
Just to let you know — we’ve received your order #%s, and it is now being processed:
子テーマのメールテンプレートは以下のようになっていた。
Just to let you know — we’ve received your order #%s, and it is now being processed:
—を—に書き換えて保存すると日本語化は問題無く動作した。
(実態参照の&mdashで書き換えても、再度メールテンプレートを開くと—表記になる)
まとめ
プラグインの影響で、メールテンプレートの動作や更に子テーマにコピーした影響で日本語化まで不具合が発生した。
【Japanized for WooCommerce】を使用した時にメールテンプレートを変更するかどうか、変更する場合は実態参照の日本語化は再度登録する必要がある。
今後のプラグインのバージョンアップに影響しなければいいが・・・
コメント