0%

正威網路行銷工作室,專注於基隆、台北與全台客製化網頁設計,提供專業 RWD 響應式、SEO 搜尋引擎優化、品牌形象設計與網站維護託管服務。

搜尋文章
聯絡資訊
地址基隆市仁二路 220 號 5 樓
追蹤我們

WordPress 註冊通知信自訂:給新會員和管理員的信怎麼改、改成 HTML 格式

WordPress 註冊通知信自訂:給新會員和管理員的信怎麼改、改成 HTML 格式 封面

有人在 WordPress 網站註冊會員,系統會寄兩封信:

  • 給新會員:標題是「《網站名稱》通知:登入詳細資料」,內容只有一行「如需設定密碼,請點擊下方網址」加一串很長的網址。
  • 給管理員:「《網站名稱》通知:新使用者註冊」,列出帳號和 Email。

寄件人還是「WordPress」。會員收到這種信,很容易以為是詐騙,直接刪掉,結果永遠沒有設定密碼。

這篇不用外掛,把三件事改好:會員信改成有按鈕的 HTML 信、管理員信附上後台連結、寄件人改成公司名稱。程式碼放在子佈景主題的 functions.php,或用 Code Snippets 這類外掛新增。

一、寄給新會員的信

PHP
// 寄給新會員的信:改標題、改成 HTML 格式,保留設定密碼的連結
add_filter( 'wp_new_user_notification_email', function ( $email, $user, $blogname ) {
	// 從原本的信裡找出「設定密碼」的網址
	if ( ! preg_match( '#https?://\S+action=rp\S*#', $email['message'], $m ) ) {
		return $email; // 找不到就維持原本的信,避免會員收不到連結
	}
	$set_password_url = $m[0];
	$name             = $user->display_name ? $user->display_name : $user->user_login;

	$email['subject'] = '歡迎加入「' . $blogname . '」,請設定你的密碼';
	$email['headers'] = array( 'Content-Type: text/html; charset=UTF-8' );
	$email['message'] = '
<div style="max-width:560px;margin:0 auto;font-family:Arial,\'Microsoft JhengHei\',sans-serif;font-size:16px;line-height:1.7;color:#333">
	<h2 style="color:#1e8a8a">' . esc_html( $name ) . ',歡迎加入!</h2>
	<p>你的帳號是:<strong>' . esc_html( $user->user_login ) . '</strong></p>
	<p>請按下面的按鈕設定密碼,設定完成就可以登入。連結有使用期限,請盡快設定。</p>
	<p style="margin:28px 0">
		<a href="' . esc_url( $set_password_url ) . '" style="background:#1e8a8a;color:#fff;padding:12px 28px;border-radius:6px;text-decoration:none;display:inline-block">設定密碼</a>
	</p>
	<p style="font-size:14px;color:#777">按鈕沒反應的話,請複製這個網址到瀏覽器打開:<br>' . esc_html( $set_password_url ) . '</p>
	<p style="font-size:14px;color:#777">如果你沒有註冊過,請忽略這封信。</p>
</div>';
	return $email;
}, 10, 3 );

說明:

  • wp_new_user_notification_email 是 WordPress 寄信給新會員之前的篩選器,可以改收件人、標題、內容和標頭。舊教學常常把整個 wp_new_user_notification() 函式重寫一遍,WordPress 改版時容易出問題,現在用這個篩選器就好。
  • 設定密碼的網址:WordPress 已經把網址寫在原本的信裡,用正規表示式找出來沿用,不用自己再產生一次。萬一找不到(例如其他外掛已經改過信),就維持原本的信,至少會員還收得到連結。
  • headers 設成 text/html,這封信才會用 HTML 顯示。只在這封信加,網站寄出的其他信不受影響。
  • 信裡的名稱、帳號用 esc_html()、網址用 esc_url() 處理,會員填的內容不會變成 HTML 程式碼。
  • HTML 信的樣式要寫在每個標籤的 style 裡。很多信箱軟體會把 <style> 整段拿掉,寫在裡面的樣式會失效。
  • 按鈕下面再放一次純文字網址,按鈕在某些信箱點不了的時候,會員還能複製網址。
  • 設定密碼的連結預設 24 小時內有效,所以信裡提醒會員盡快設定。

二、寄給管理員的通知

PHP
// 寄給管理員的新會員通知:標題好辨認,附上後台編輯連結
add_filter( 'wp_new_user_notification_email_admin', function ( $email, $user, $blogname ) {
	$email['subject'] = '【新會員】' . $user->user_login . ' 剛剛註冊了';
	$email['message'] = "網站「{$blogname}」有新會員註冊:\n\n"
		. '帳號:' . $user->user_login . "\n"
		. 'Email:' . $user->user_email . "\n"
		. '註冊時間:' . wp_date( 'Y-m-d H:i' ) . "\n\n"
		. "到後台查看:\n" . admin_url( 'user-edit.php?user_id=' . $user->ID ) . "\n";
	return $email;
}, 10, 3 );
  • wp_new_user_notification_email_admin 是寄給管理員那封信的篩選器。
  • 標題改成「【新會員】帳號 剛剛註冊了」,在收件匣一眼就認得出來。
  • 內容附上註冊時間和後台的「編輯使用者」連結,點了直接看這個會員。時間用 wp_date(),會照網站設定的時區顯示。
  • 這封信維持純文字,給自己看的信,簡單清楚就好。

如果網站有開「管理員審核」(新會員要管理員核准才能登入),可以在這封信加一句「請到後台核准」,提醒自己處理。

三、寄件人不要再是 WordPress

PHP
// 網站寄出的信,寄件人名稱和地址不要再是「WordPress」
add_filter( 'wp_mail_from_name', function () {
	return '正威網路行銷';
} );
add_filter( 'wp_mail_from', function () {
	return 'service@example.com'; // 換成你網域的信箱
} );
  • wp_mail_from_name 改寄件人名稱,wp_mail_from 改寄件地址。這兩個會套用到網站寄出的所有信,包括忘記密碼、留言通知。
  • 寄件地址要用自己網域的信箱,例如網站是 example.com,就用 service@example.com。用 Gmail、Yahoo 的地址當寄件人,收件端檢查寄件來源時對不上,很容易被當成垃圾信。
  • 如果網站已經裝了 SMTP 寄信外掛,寄件人通常在外掛的設定裡就能改,外掛的設定會蓋過這兩行,改那裡就好。

實際測試的結果

在測試網站上,先不加程式碼註冊一個帳號,再加上三段程式碼註冊一個,攔下寄出的信比較:

  • 原本:管理員收到「《網站名稱》通知:新使用者註冊」,會員收到「《網站名稱》通知:登入詳細資料」,兩封都是純文字,寄件人是 WordPress。
  • 加上之後:管理員收到「【新會員】帳號 剛剛註冊了」,內容有註冊時間和後台連結;會員收到「歡迎加入「網站名稱」,請設定你的密碼」,是有綠色按鈕的 HTML 信;兩封的寄件人都變成「正威網路行銷」。
  • 用 HTML 信裡的按鈕連結去設定密碼,顯示「密碼已重設」,連結可以正常使用。
  • 網站名稱裡有 & 符號,標題也正常顯示,沒有變成 &amp;。

WooCommerce 的「新帳號」信是另一封

顧客在 WooCommerce「我的帳號」或結帳時建立帳號,寄出的是 WooCommerce 自己的「新帳號」信,不是上面那封。這封到 WooCommerce → 設定 → 電子郵件,在列表裡找「新帳號」就能改標題、內容;寄件者名稱和地址在同一頁的「電子郵件發送選項」。

信一直寄不到?

改了內容,信還是沒收到,問題通常在寄信本身:主機的寄信功能被擋、寄件地址沒設定好,信就進了垃圾郵件匣或直接消失。建議設定 SMTP,用正式的信箱帳號寄信,做法可以參考用 Gmail 收發公司企業信箱:寄件(SMTP)設定。

延伸閱讀

會員收到的第一封信,就是對網站的第一印象。正威網路行銷是 25 年經驗的基隆網頁設計工作室,會員網站的通知信、寄信設定都會一起處理好,台北與全台客戶也歡迎來聊聊。

分享這篇文章

返回文章列表更多「Wordpress代碼教學」文章

發表留言

還沒有人留言,歡迎第一個分享你的想法或問題。留言經審核後才會顯示,Email 不會公開。

讓我們一起打造
您的專屬網站!