新的 WordPress 註冊流程改變了,不在要求用戶自己輸入密碼來申請註冊,而是反過來給用戶的郵箱發送密碼找回鏈接。
這樣的好處是避免了一些安全隱患還順便關聯了郵箱。不過,這樣也對這些搭建 WordPress 的博主的技術有了進一步的要求,比如:
需要自己配置郵箱——如果你的空間沒有提供郵箱的話,一般是服務器代發,这样的邮件则很容易进到垃圾邮件列表——更有甚者直接就收不到了。如果你是自己的vps,那你還得搭建各種服務——php自帶的發信功能又不是那麼完美。
總之,我們得一一解決這些問題。
這裡,我遇到了一個只會在偶爾才發生的情況,在搭建了 cnswift.org 這段時間裡,不少人一直來註冊,他們與我的工作環境不同,所以註冊的郵箱也不一樣,而 WordPress 發送的激活鏈接是以 <HTTPS://www.logcg.com/xxxxxx> 的形式發送,所以對於一些不太好的郵箱來說,鏈接不是被解析為 HTTPS://www.logcg.com/xxxxxx 而是奇怪的 HTTPS://www.logcg.com/xxxxxx> 。
這也就難怪總是會有一些人來跟我說:
“抱歉,該 key 似乎無效”
了。
這似乎還是 WP 常年以來的老bug,不過,我們可以手動修復它,改系統文件不是一個好的辦法——畢竟,現在 WordPress 升級還是挺頻繁的。
我們在 function.php 裡寫個小插件即可,另外,最好像落格博客一樣對當前主題做一個子主題——不費甚麼事,但可以避免你在更新主題後重新配置或者為了保留配置而不敢更新。
總之,在你的 function.php 文件末尾添加如下代碼即可:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
/** * WordPress忘记密码发送的邮件中点击找回链接提示“抱歉,该 key 似乎无效” */ function reset_password_message( $message, $key ) { if ( strpos($_POST['user_login'], '@') ) { $user_data = get_user_by('email', trim($_POST['user_login'])); } else { $login = trim($_POST['user_login']); $user_data = get_user_by('login', $login); } $user_login = $user_data->user_login; $msg = __('有人要求重设如下帐号的密码:'). "\r\n\r\n"; $msg .= network_site_url() . "\r\n\r\n"; $msg .= sprintf(__('用户名:%s'), $user_login) . "\r\n\r\n"; $msg .= __('若这不是您本人要求的,请忽略本邮件,一切如常。') . "\r\n\r\n"; $msg .= __('要重置您的密码,请打开下面的链接:'). "\r\n\r\n"; $msg .= network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user_login), 'login') ; return $msg; } add_filter('retrieve_password_message', reset_password_message, null, 2); |
這下,發送的郵件裡就不會再有那一對煩人的 <> 了!
延伸閱讀
http://www.chencao.com/575.html
本文由 落格博客 原創撰寫:落格博客 » WordPress 找回密碼郵件 “抱歉,該 key 似乎無效”
轉載請保留出處和原文鏈接:https://www.logcg.com/archives/1433.html