WooCommerce 會員資料和通知信的細節:顯示名稱用真名、主旨帶名字、少寄一封信

WooCommerce 會員資料和通知信的細節:顯示名稱用真名、主旨帶名字、少寄一封信

最後更新:2026/10/15

一家做了兩年的網店,後台「使用者」列表裡有八百個客人,顯示名稱卻是 wang1234、amy.lin、user5566,想找「上週訂禮盒的王小姐」要先猜她的帳號。客人那邊也差不多:每封通知信的主旨都一樣,「已收到你的訂單」,新帳號的信打開來連一句「您好」都沒有。這些都是小事,但客人感受到的服務,就是這些小事加起來的。

這篇整理五段程式碼,各自獨立,可以只用你需要的:結帳或存地址時把姓名同步到帳號、帳號的顯示名稱固定用「姓+名」、訂單通知信主旨帶客人名字、新帳號信開頭加一句稱呼、關掉客人改密碼時寄給管理員的那封信,最後是台灣地址格式多顯示一行電話。

不想自己改?把這篇交給 AI

把這篇的網址(或全文)連同下面這段話貼給 AI:

我的網站是 WordPress,有裝 WooCommerce。我想照下面這篇文章,整理會員資料和通知信的細節:姓名同步到帳號、通知信主旨帶名字、新帳號信加稱呼、關掉管理員的密碼已更改通知、地址格式加電話。
請先問我:我要哪幾段、通知信主旨想怎麼寫、顯示名稱要用什麼格式。
問清楚之後,再一步一步告訴我:要用哪一段程式碼、貼在哪裡、哪些地方要換成我自己的資料,以及改完怎麼測試。
如果文章的做法不適合我的網站,請直接告訴我原因和替代做法。
文章:(貼上這篇的網址,或整篇內容)

改之前先備份,密碼不要貼給 AI。

完整程式碼

// 第 78 篇:會員資料與通知信細節

// 1. 結帳或存地址時,把帳單的姓名同步到帳號的姓、名和顯示名稱(王小明)
function mimi_sync_customer_name($user_id) {
    $first = get_user_meta($user_id, 'billing_first_name', true);
    $last  = get_user_meta($user_id, 'billing_last_name', true);
    if ($first || $last) {
        wp_update_user(['ID' => $user_id, 'first_name' => $first, 'last_name' => $last, 'display_name' => trim($last . $first)]);
    }
}
add_action('woocommerce_checkout_update_user_meta', 'mimi_sync_customer_name');
add_action('woocommerce_customer_save_address', 'mimi_sync_customer_name');
add_action('woocommerce_created_customer', 'mimi_sync_customer_name', 20);

// 2. 「帳號詳細資料」存檔時,顯示名稱固定用「姓+名」,客人不用自己選
add_action('woocommerce_save_account_details', function ($user_id) {
    $u = get_userdata($user_id);
    wp_update_user(['ID' => $user_id, 'display_name' => trim($u->last_name . $u->first_name) ?: $u->display_name]);
});

// 3. 給客人的訂單通知信,主旨帶上客人的名字
add_filter('woocommerce_email_subject_customer_processing_order', 'mimi_email_subject_with_name', 10, 2);
add_filter('woocommerce_email_subject_customer_completed_order', 'mimi_email_subject_with_name', 10, 2);
function mimi_email_subject_with_name($subject, $order) {
    $name = trim($order->get_billing_last_name() . $order->get_billing_first_name());
    return $name ? $name . ' 您好,' . $subject : $subject;
}

// 4. 新帳號通知信:開頭加一行稱呼
add_action('woocommerce_email_header', function ($heading, $email) {
    if ($email && $email->id === 'customer_new_account' && $email->object instanceof WP_User) {
        $u    = $email->object;
        $name = trim($u->last_name . $u->first_name) ?: $u->display_name;
        echo '<p style="margin:0 0 16px">' . esc_html($name) . ' 您好,歡迎加入!</p>';
    }
}, 10, 2);

// 5. 客人在「我的帳戶」改密碼時,不要寄「密碼已更改」通知給管理員
add_filter('woocommerce_disable_password_change_notification', '__return_true');

// 6. 訂單、我的帳戶上的地址格式,台灣的地址最後加上電話
add_filter('woocommerce_localisation_address_formats', function ($formats) {
    $formats['TW'] = "{postcode} {state} {city}\n{address_1} {address_2}\n{company}\n{name}\n{phone}";
    return $formats;
});
add_filter('woocommerce_formatted_address_replacements', function ($rep, $args) {
    $rep['{phone}'] = $args['phone'] ?? '';
    return $rep;
}, 10, 2);
add_filter('woocommerce_order_formatted_billing_address', function ($address, $order) {
    $address['phone'] = $order->get_billing_phone();
    return $address;
}, 10, 2);

程式碼放在 Code Snippets 這類外掛或子主題,放法和備份方式見〈WooCommerce 結帳頁改成台灣習慣〉。

六段各做了什麼

第 1 段處理「客人結帳時填了姓名,帳號卻還是空的」這件事。WooCommerce 把結帳填的姓名存在帳單資料裡,帳號本身的姓、名和顯示名稱不會跟著變。這段在三個時間點同步:結帳存客人資料時、客人在會員中心存地址時、新客人建立帳號時。顯示名稱用「姓+名」,中文名字就是「王小明」。

第 2 段處理另一個入口:客人到「我的帳戶 > 帳號詳細資料」改姓名。WooCommerce 這頁有一個「顯示名稱」欄位讓客人自己選,大部分客人不會動它,所以存檔時直接用姓+名蓋過去,後台看到的永遠是真名。

第 3 段改通知信的主旨。「處理中的訂單」和「已完成的訂單」這兩封客人會收到的信,主旨前面加上「王小明 您好,」。客人的信箱裡一排促銷信,有自己名字的那封比較不會被略過。要改其他信,把 customer_processing_order 換成那封信的代號就好,代號在「WooCommerce > 設定 > 電子郵件」每封信的網址裡看得到。

第 4 段讓「新帳號」通知信多一行稱呼。這封信預設從「感謝你在 ○○ 建立帳號」開始,沒有稱呼;我們在信的標題下面加「王小明 您好,歡迎加入!」。

第 5 段關掉一封沒必要的信:客人在會員中心改密碼,WordPress 預設會寄「密碼已更改」給網站管理員。客人多的時候,管理員信箱每天都是這種通知,而且管理員也不需要知道。WooCommerce 提供了一個開關,這一行就是把它打開。

第 6 段是地址格式。訂單頁、通知信、會員中心顯示的地址,是照每個國家的格式排的,台灣預設的格式是姓名在第一行、「縣市, 鄉鎮區 郵遞區號」在最後一行,而且沒有電話。這段把台灣的格式改成「郵遞區號 縣市 鄉鎮區、地址、公司、姓名、電話」,照台灣寫信封的順序,電話排在最後一行,出貨的人不用另外找。

測試結果

我們在本機測試站用一個全新的帳號走一遍:

  • 用 [email protected] 註冊,攔到「已建立你的 MIMI Test 帳號!」的信,開頭有「newbie 您好,歡迎加入!」(這時候還沒填姓名,所以用帳號名稱)。
  • 到帳號詳細資料填名「小明」、姓「王」,存檔後顯示名稱變成「王小明」,帳單的名也同步成「小明」。
  • 下一張單,訂單狀態改成處理中、再改成已完成,攔到的兩封信主旨分別是「王小明 您好,已收到你的 MIMI Test 訂單!」和「王小明 您好,MIMI Test 的訂單商品已出貨!」。
  • 管理員收到的「你有新訂單」主旨沒有被改到。
  • 同一張訂單的帳單地址,加程式碼前顯示「王 小明/路 1 號/臺北市, 大安區 106」,加了之後顯示「106 臺北市 大安區/路 1 號/王 小明/0911222333」。

還有哪些信可以順手調

這篇動的是主旨和稱呼。信的內容要加一段出貨說明、什麼情況才通知倉庫,看〈WooCommerce 訂單通知信怎麼改〉;出貨後把物流單號放進完成信,看〈WooCommerce 出貨後給客人物流單號〉;信常常跑進垃圾信件匣,看〈WordPress 寄信進垃圾信件匣?〉。

客人的名字,是服務的起點

後台看得到真名,客服回信才叫得出名字;通知信有稱呼,客人才覺得這家店記得他。這些細節每一個都只要幾行程式碼,加起來卻是客人回不回購的差別。

如果你的網店想把會員資料、通知信和售後流程一起整理好,可以先看〈IG 帳號不是你的資產〉想想網站要做到什麼,讓客人回購和轉介紹的做法可以看〈讓客人幫你帶客人〉。MIMI 專做客製化網頁設計,購物車電商網站可以依你的服務流程設計會員功能。MIMI 提供新北網頁設計服務,新北的店家可以用電話、Email 直接和設計師討論;費用可以先看首頁的製作費用參考,歡迎聯絡 MIMI。

WooCommerce 出貨後給客人物流單號:後台填一次,完成信和會員中心都看得到
WooCommerce PDF 發票和出貨單再加料:商品規格、小圖、付款方式、撿貨提醒

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

我的車
願望清單
最近瀏覽過的
類別