【WordPress】WooCommerceでメールテンプレートが反映せず、日本語化もされない。

Wordpress

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】を使用した時にメールテンプレートを変更するかどうか、変更する場合は実態参照の日本語化は再度登録する必要がある。

今後のプラグインのバージョンアップに影響しなければいいが・・・

コメント