WooCommerceの自動送信メールに顧客の名前(宛名)を表示させる

10494

当サイトでは管理人の個人的な経験に基づき商品やサービスの紹介をしております。業者から直接依頼を受けたり、報酬を得て掲載した記事はありません。ただし商品やサービスの紹介にはアフィリエイトリンクを使用させていただいております。遷移先のサイトで購入や申し込みをされた場合、このサイトが報酬を得る場合があります。

注意!こちらの記事はWooCommerce Ver3.4での内容です。Ver.3.5以降の場合メールが送られない場合があるのでこの方法は使用しないでください。申し訳ありません。(2018年12月追記)

こちらにver3.5での対応方法について記事にしておきました。合わせてご確認ください。

受注メールに宛名がない

WooCommerceの標準のメールテンプレートだと文章の頭にお客様の名前が表示されません。さすがに宛名ぐらいは入れておいた方がよいかと思います。いろいろ調べてみましたが、たったそれだけでもそこそこ難儀しましたので、シェアしたいと思います。

※こちらを参考にさせて頂きました。
https://wordpress.org/support/topic/how-to-add-customer-name-to-new-customer-admin-order-email/

↓標準のテンプレートだとこんな感じ。そっけない・・・

↓せめてお客様の名前だけでも・・お名前の後の文面も変更が必要です。ヘッダータイトルも変更しました。

変更方法

更するには、まずメールのテンプレートをコピーする必要があります。WooCommerceの設定画面で、メール設定からテンプレートをテーマファイルにコピーし、それをFTPでダウンロードしてから作業開始します。

↑WooCommerceの「設定画面」で「メール」タブを選択、編集したいメールをクリックする。ここでは「処理中の注文」をクリックします。
↑次に表示される画面で、「HTMLテンプレート」項目の右側に「テーマファイルにコピー」ボタンがあるので、それをクリック
↑すると「テンプレートをテーマファイルにコピーした」旨が表示されるので、画面に記載されているディレクトリから該当のテンプレートをダウンロード。すべてのテンプレートを修正するなら、この作業を繰り返す。(直接コピーしてもOK)

以下、メールテンプレートのうち「処理中の注文」=「customer-processing-order.php」を使用しています。他のテンプレートもほぼ同じです。

メールのヘッダーを生成する部分(以下の部分)に

/**
 * @hooked WC_Emails::email_header() Output the email header
 */

  // email header
 do_action( 'woocommerce_email_header', $email_heading, $email );
?>

<p><?php _e( "Your order has been received and is now being processed. Your order details are shown below for your reference:", 'woocommerce' ); ?></p>

以下の2つのコードを挿入します。

 // 顧客の姓名を取得
$user_id = $order->get_customer_id();
 if( !$user_id ) {
 return; // user_id not found
 }
 $user = get_user_by( 'ID', $user_id );
 if( !$user ) {
 return; // user not found
 }
 $customer_name = $user->last_name.' '.$user->first_name;
 // 名字と名前の間にスペースを入れています
 // メールに顧客の名前を挿入 敬称やhタグは適当に設定
<h2><?php print $customer_name; ?> 様</h2>

挿入後はこんな感じになります。

/**
 * @hooked WC_Emails::email_header() Output the email header
 */

// 顧客の姓名を取得
$user_id = $order->get_customer_id();
 if( !$user_id ) {
 return; // user_id not found
 }
 $user = get_user_by( 'ID', $user_id );
 if( !$user ) {
 return; // user not found
 }
 $customer_name = $user->last_name.' '.$user->first_name;
 // 名字と名前の間にスペースを入れています
 
 // email header
 do_action( 'woocommerce_email_header', $email_heading, $email );
?>

 // メールに顧客の名前を挿入 敬称やhタグは適当に設定
<h2><?php print $customer_name; ?> 様</h2>

<p><?php _e( "Your order has been received and is now being processed. Your order details are shown below for your reference:", 'woocommerce' ); ?></p>

以上です。

宛名の後の本文も変更したいところです。該当する翻訳ファイルを編集するか、pタグ内のphpを日本文に書き換えるか、どちらかで対応できます。翻訳ファイル側を変更するのが筋だとは思いますが、自分が作ったネットショップは国内専用なので、文章(段落)を付け足すときだけ日本語直接記入、翻訳ファイルが存在する場合は翻訳ファイルを修正するようにしました。

(上記のようにした理由をコソコソと述べると・・・翻訳ファイルに、新しい翻訳を追加することができなかったからです(笑))

 

↓自動送信メールについてはこちらもどうぞ

↓無料プラグイン・コピペでつくったwoocommerceのecサイト、完成後の受注→発送作業の流れと、今回行った作業内容についてはこちら

↓woocommerceにクレジットカード決済を導入するなら・・Squareがよいと思います