WooCommerceの注文受付メール等に顧客の名前を表示させる

68
views

受注メールに宛名がない・・

WooCommerceのメールテンプレートを確認していたのですが、標準だと文章の頭にお客様の名前が表示されていないのが気になりました。これを表示させるのもそこそこ難儀しましたので、シェアしたいと思います。

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

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

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

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

以下、メールテンプレートのうち、受注後に送られるメール、「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;
 // 名字と名前の間にスペースを入れています
 // メールに顧客の名前を挿入

<h2><?php print $customer_name; ?> 様</h2> // 敬称やhタグはご自由に・・

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

/**
 * @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 );
?>

<h2><?php print $customer_name; ?> 様</h2>
 // 敬称やhタグはご自由に・・

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

オープンまで、大きなところから細部まで果てしない調整が続きます・・・甘く見ていました(爆)