在 WordPress 中,如果要修改「網站管理員電子郵件地址」,系統通常會寄送一封 確認信 到舊信箱。
但如果 舊信箱已經無法使用(例如公司信箱停用、網域失效、或帳號遺失),就會卡在無法確認的狀態。
這時仍然有幾種方法可以修改新的 Email。本篇整理幾種 常見且實務上可行的方法。
內容目錄
一、WordPress 中的兩種 Email(先分清楚)
在 WordPress 中,其實有兩種常被混淆的 Email:
| 類型 | 位置 | 用途 |
|---|---|---|
| 網站通知 Email | 設定 → 一般 → 網站管理員電子郵件地址 | 接收網站通知 |
| 管理員帳號 Email | 使用者 → 個人資料 | 管理員帳號登入用 Email |
對應資料庫:
| Email 類型 | 資料表 |
|---|---|
| 通知 Email | wp_options.admin_email |
| 帳號 Email | wp_users.user_email |
因此修改方式會不同。
二、使用 WP-CLI 修改(最推薦)
如果主機可以使用 WP-CLI,這是最安全也最乾淨的方式。
修改網站通知 Email
wp option update admin_email [email protected]
如果之前有未完成確認的 Email,可以刪除:
wp option delete new_admin_email
修改管理員帳號 Email
例如將 admin 帳號改成新的 Email:
wp user update admin [email protected]
查看目前 Email:
wp user get admin --field=user_email
三、批次修改多個 WordPress 站台
如果主機上有很多 WordPress 站台(例如都在 /mnt/ 下),可以寫一個 shell script 批次處理。
以下範例會:
- 掃描
/mnt下所有 WordPress 站台 - 修改網站通知 Email
- 清除
new_admin_email
#!/usr/bin/env bash BASE_DIR="/mnt" NEW_EMAIL="[email protected]" process_site() { local site_dir="$1" if [[ ! -f "$site_dir/wp-config.php" ]]; then return fi echo "處理站台: $site_dir" if ! wp --path="$site_dir" core is-installed >/dev/null 2>&1; then echo "跳過" return fi old_email=$(wp --path="$site_dir" option get admin_email) echo "舊 email: $old_email" wp --path="$site_dir" option update admin_email "$NEW_EMAIL" wp --path="$site_dir" option delete new_admin_email } find "$BASE_DIR" -type f -name "wp-config.php" | while read conf do process_site "$(dirname "$conf")" done
四、直接修改資料庫(無 WP-CLI 時)
如果沒有 WP-CLI,也可以直接修改資料庫。
修改網站通知 Email
UPDATE wp_options
SET option_value='[email protected]'
WHERE option_name='admin_email';
如果卡在等待確認:
DELETE FROM wp_options
WHERE option_name='new_admin_email';
修改管理員帳號 Email
UPDATE wp_users
SET user_email='[email protected]'
WHERE user_login='admin';
五、暫時用程式碼強制修改
如果可以修改網站程式,也可以在 functions.php 加入:
update_option('admin_email','[email protected]');
載入網站後即可更新,之後記得刪除這段程式碼。
六、常見問題
為什麼 WordPress 要確認 Email?
從 WordPress 4.9 開始,修改管理員通知 Email 會需要確認信,避免網站被入侵後偷偷更改通知地址。
因此會新增一個暫存欄位:
new_admin_email
只有確認後才會生效。
修改後沒有生效?
請檢查是否存在:
new_admin_email
如果有,刪除即可。
七、建議的最佳做法
在實務維運中,建議使用:
有 SSH
使用 WP-CLI
wp option update admin_email [email protected]
多站台
寫 shell script + WP-CLI
無 SSH
直接 修改資料庫
近期留言