スルーしてください
文字化け問題
お客様に自動送信されるメールの一部が文字化けする。
基本的に送信するメールは3つ、銀行振込用受付、支払い確認、発送完了。
このうちの後者2つ、支払い確認と発送完了のメールがHTMLで文字化けする。プレーンテキストにすると文字化けはしないが、宛名が姓名ではなく名のみになってありえない。変えたい。
とりあえずプレーンテキストで送るようにして、宛名だけ変えようと思った。
しかし、子テーマに該当メールをWP上でコピーし、開こうとすると真っ白。
compreted order ✖
new acount 〇 使っていない
note ✖ 使っていない
on hold order 〇
processing order ✖
refund order ✖
reset password 〇 使っていない
ということで赤字の3つがやばい。
FTPでサーバーを見に行くとファイルは存在し、既に書き換えられている(以前お客様へのメールの宛名がこれじゃだめだと言うことで書き換えたはず)。
つまり読まないファイルが子テーマに存在し、親テーマのそれを読んでいるってことになるのかな???
だとすると親テーマから元ファイルを子テーマに再度移すべき? あれおかしいな、でもウーコマの設定⇒メール のところで子テーマにコピーみたいにしてるんだけど、既に親の中にあるファイルがダメってこと???
いや勘違い、親の中にはそもそもこれは存在しない。子にしかない。
ということで子テーマの中からFTPソフトでPHPファイルをダウンロードしてみた。
OK on hold
ダメ compleeted
ざっと見て大きな違いが2か所。
19行目 defined( ‘ABSPATH’ ) || exit; 〇な方
19行目 if ( ! defined( ‘ABSPATH’ ) ) { ✖な方
exit;
}
ifで何を仮定しているんだろう?
38行目
<h2><?php print $customer_name; ?> 様</h2>
<p><?php _e( ‘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:’, ‘woocommerce’ ); ?></p><?php // phpcs:ignore WordPress.XSS.EscapeOutput ?>
同じ場所
<h2><?php print $customer_name; ?> 様</h2>
<p><?php printf( esc_html__( ‘ご注文の商品の発送手続きが完了しました。ご注文誠にありがとうございました。’, ‘woocommerce’ ), esc_html( wp_specialchars_decode( get_option( ‘blogname’ ), ENT_QUOTES ) ) ); ?></p>
本来ここでは日本語は入らないんじゃないかと思う。ただし〇の方でも「様」という日本語は入っているので大きな問題ではないのかな。
バグ探し開始
まずは最も簡単な、PHPファイル先頭部分に文字コードを入れる
テキトーにググって貼り付けたら文字化け解消した! でもうっかりecho消すの忘れたんで「文字化けしない」ってメールのヘッダーに出てしまった(^^;
いやいやこんなに簡単なことだったのか!!!
日本語文の最後に「。」があり、その後ろにダブルコロンが抜けているから、これも怪しいと思ったんだけど。
<?php
header('Content-Type: text/html; charset=UTF-8');
?>