
申請其他網站的會員時,常常註冊完還要再輸入一次帳號密碼才能登入,多一個步驟,就多一些人放棄。這篇整理怎麼讓 WordPress 的會員:
- 註冊成功後直接登入
- 登入後跳轉到指定頁面,例如歡迎頁或會員中心
(原本另一篇〈用代碼使 WordPress 成員註冊成功後跳轉到指定頁面〉的內容,已經整合到這裡。)
先了解 WordPress 預設的註冊流程
要開放註冊,到「設定 → 一般」,在「成員資格」勾選讓任何人都能註冊,新使用者的預設角色維持「訂閱者」。千萬不要把預設角色設成網站管理員或編輯,否則任何人註冊後都能修改你的網站。
開放之後,註冊頁的網址是 你的網址/wp-login.php?action=register,預設流程是:
- 訪客填寫使用者名稱與電子郵件。
- WordPress 寄出一封信,裡面有「設定密碼」的連結。
- 訪客點連結設定密碼,再回到登入頁登入。
步驟不少,而且註冊完只會回到登入頁、提示訪客去收信。下面的程式碼就是要把這段流程縮短。
程式碼
加在子主題的 functions.php 最後面,或用 Code Snippets 外掛新增一段程式碼:
/**
* 1) 註冊成功後自動登入
* 掛在 register_new_user:主要由 WordPress 內建的註冊表單觸發
* 優先順序 20:讓 WordPress 先寄出「設定密碼」通知信
*/
add_action( 'register_new_user', function ( $user_id ) {
wp_set_current_user( $user_id );
wp_set_auth_cookie( $user_id );
}, 20 );
/**
* 2) 註冊成功後跳轉到指定頁面
*/
add_filter( 'registration_redirect', function () {
return home_url( '/welcome/' );
} );- 第 1 段在帳號建立、通知信寄出之後,替新會員設定登入狀態。
- 第 2 段決定註冊完要去哪一頁。把
/welcome/換成你的頁面網址,例如會員中心、新手說明頁。 - 只想跳轉、不想自動登入的話,只加第 2 段就好,可以在那一頁提醒訪客「請到信箱收信、設定密碼」。
指定頁面的寫法
- 用網址路徑:
home_url( '/welcome/' ),最直覺。 - 用頁面 ID:
get_permalink( 123 ),以後頁面改網址也不會失效。頁面 ID 可以在後台編輯該頁面時,從網址列post=123的數字看到。
WordPress 會用 wp_safe_redirect() 處理這個跳轉,只能導向自己網站的網址,填外部網址不會生效。
自動登入之後,會員還是要設定密碼
WordPress 預設的註冊表單沒有讓使用者自己輸入密碼,系統會產生一組隨機密碼,再寄信請他設定新密碼。
自動登入只是讓他這一次不用登入。下次要登入時,還是要先用信裡的連結設定密碼,或在登入頁按「忘記密碼」重新設定。所以歡迎頁上最好提醒一句:「請到信箱收信設定密碼,下次才能登入。」
想讓會員在註冊時就自己設定密碼、填寫更多欄位,就需要會員外掛或自訂的註冊表單。
舊寫法的問題
這篇 2015 年的版本把程式碼掛在 user_register,並在裡面直接用 wp_redirect() 轉址、exit 結束。這樣寫有三個問題:
user_register不只在前台註冊時觸發:管理員在後台「使用者 → 新增使用者」、購物網站結帳時建立帳號、外掛匯入會員,全部都會觸發。管理員新增一個使用者,自己就會變成用那個新帳號登入,還被導到首頁。exit會中斷註冊流程:WordPress 建立帳號之後,還要寄出設定密碼的通知信、讓其他外掛處理新會員。被exit中途打斷,新會員收不到信,其他外掛的功能也可能失效。wp_redirect()不會檢查網址:現在建議用wp_safe_redirect(),只允許導向自己的網站。
新寫法改掛在 register_new_user,它主要由 WordPress 內建的註冊表單觸發,後台新增使用者、結帳建立帳號都不會用到它;而且不在裡面轉址,轉址交給 registration_redirect 處理,就沒有上面這些問題。原本另一篇文章用 registration_redirect 設定跳轉頁的做法是對的,這裡只是改成比較簡潔的寫法。
用 WooCommerce 或會員外掛的話
- WooCommerce:在「我的帳號」頁註冊的顧客,WooCommerce 預設就會自動登入。註冊後想導向其他頁面,用 WooCommerce 自己的
woocommerce_registration_redirect:
add_filter( 'woocommerce_registration_redirect', function () {
return home_url( '/welcome/' );
} );- 會員外掛:大多在外掛設定裡就有「註冊後自動登入」「註冊後導向頁面」的選項,先找設定,通常不需要寫程式。
上面的 register_new_user 與 registration_redirect 只對 WordPress 內建的註冊表單(wp-login.php?action=register)有效,用其他外掛的註冊表單時要看該外掛的設定。
開放註冊的安全提醒
- 新使用者的預設角色維持「訂閱者」。
- 註冊表單加上驗證碼(例如 Cloudflare Turnstile、Google reCAPTCHA 的相關外掛),減少機器人註冊假帳號。
- 自動登入等於跳過了電子郵件驗證:對方就算填了不是自己的信箱,也能先登入一次。會員權限如果牽涉付費內容或個人資料,建議保留「收信設定密碼」的流程,或使用會員外掛的信箱驗證功能。
- 不想讓會員看到後台畫面,可以搭配WordPress 禁止非管理員進入後台。
延伸閱讀
- WordPress 禁止非管理員進入後台:訂閱者、會員登入後自動導回首頁
- WordPress 依登入狀態、會員角色顯示部分內容:不用外掛的短代碼寫法
- WordPress 發表新文章自動寄信通知會員:正確寫法與大量寄信的注意事項
會員網站的註冊、登入流程順不順,往往決定訪客願不願意留下來。正威網路行銷是 25 年經驗的基隆網頁設計工作室,提供客製化網頁設計,網站需要會員功能也歡迎來聊聊。







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