溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

修正WordPress密碼設(shè)置鏈接錯(cuò)誤的方法

發(fā)布時(shí)間:2020-08-12 11:12:14 來(lái)源:億速云 閱讀:160 作者:小新 欄目:建站服務(wù)器

小編給大家分享一下修正WordPress密碼設(shè)置鏈接錯(cuò)誤的方法,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

Press教程欄目給大家介紹修正 WordPress 密碼設(shè)置鏈接錯(cuò)誤的方法,希望對(duì)需要的朋友有所幫助!

當(dāng)用戶(hù)注冊(cè)或者忘記密碼獲取新密碼時(shí)WordPress會(huì)自動(dòng)向用戶(hù)郵箱中發(fā)送一個(gè)驗(yàn)證鏈接地址,用戶(hù)通過(guò)打開(kāi)這個(gè)鏈接設(shè)置密碼,不過(guò)經(jīng)常發(fā)現(xiàn)這個(gè)鏈接直接打開(kāi)后,并不是設(shè)置密碼的正確鏈接。

這個(gè)問(wèn)題的并不是WordPress的原因,正常WordPress設(shè)置密碼的鏈接地址是沒(méi)有超鏈接的,而是QQ郵箱自作聰明為個(gè)鏈接地址加上了超鏈接,并把本不是鏈接地址內(nèi)容的<>符號(hào)也加了進(jìn)去,結(jié)果造成鏈接錯(cuò)誤,貌似只有大家常用的QQ郵箱有此問(wèn)題。這是一個(gè)老生常談問(wèn)題,網(wǎng)上解決辦法比比皆是,不過(guò)都是千篇一律,充分體現(xiàn)了天下文章一大抄。

下面是我的解決方法,以WordPress 5.3.2為例:

一、最簡(jiǎn)單的方法

修改WordPress程序文件刪除代碼中的<>符號(hào),

修正忘記密碼獲取新密碼鏈接

打開(kāi)WordPress程序根目錄的wp-login.php文件,將大約417行的:

$message .= '<' . network_site_url( "wp-login.php?action=rp&key=$key&login=" . rawurlencode( $user_login ), 'login' ) . ">\r\n";

改為:

$message .= '' . network_site_url( "wp-login.php?action=rp&key=$key&login=" . rawurlencode( $user_login ), 'login' ) . "\r\n";

只是把代碼中前后<>符號(hào)去掉。

修正用戶(hù)注冊(cè)設(shè)置密碼鏈接

打開(kāi)WordPress程序wp-includes目錄中的pluggable.php文件,將大約2003行的:

$message .= '<' . network_site_url( "wp-login.php?action=rp&key=$key&login=" . rawurlencode( $user->user_login ), 'login' ) . ">\r\n\r\n";

改為

$message .= '' . network_site_url( "wp-login.php?action=rp&key=$key&login=" . rawurlencode( $user->user_login ), 'login' ) . "\r\n\r\n";

也是只需要把代碼中前后<>符號(hào)去掉即可。

缺點(diǎn):升級(jí)WordPress程序后,需要再次修改。

二、一勞永逸的方法

這也是本文的重點(diǎn),也是應(yīng)主題用戶(hù)的要求,添加到目前主題中的方法,這里分享一下。

將下面代碼添加到當(dāng)前主題函數(shù)模板functions.php中即可。

// 修正忘記密碼獲取新密碼鏈接
add_filter('retrieve_password_message', 'zm_reset_password_message_amend', 99, 1);
function zm_reset_password_message_amend($string) {
return preg_replace('/<(' . preg_quote(network_site_url(), '/') . '[^>]*)>/', '\1', $string);
}
 
// 修正用戶(hù)注冊(cè)設(shè)置密碼鏈接
add_filter( 'wp_new_user_notification_email' , 'zm_user_notification_email_amend', 10, 3 );
function zm_user_notification_email_amend( $wp_new_user_notification_email, $user, $user_email ) {
global $wpdb, $wp_hasher;
$key = wp_generate_password( 20, false );
do_action( 'retrieve_password_key', $user->user_login, $key );
if ( empty( $wp_hasher ) ) {
require_once ABSPATH . WPINC . '/class-phpass.php';
$wp_hasher = new PasswordHash( 8, true );
}
$hashed = time() . ':' . $wp_hasher->HashPassword( $key );
$wpdb->update( $wpdb->users, array( 'user_activation_key' => $hashed ), array( 'user_login' => $user->user_login ) );
$switched_locale = switch_to_locale( get_user_locale( $user ) );
$message = sprintf(__('Username: %s'), $user->display_name) . "\r\n\r\n";
$message .= __('To set your password, visit the following address:') . "\r\n\r\n";
$message .= '' . network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user->user_login), 'login') . "\r\n\r\n";
$wp_new_user_notification_email['message'] = $message;
return $wp_new_user_notification_email;
}

網(wǎng)上能找到修正重置密碼鏈接的方法,不過(guò)代碼略顯拖沓,本文的方法只一句關(guān)鍵代碼解決。

至于修正用戶(hù)注冊(cè)設(shè)置密碼鏈接,經(jīng)過(guò)重寫(xiě)郵件函數(shù)解決,貌似代碼還有精簡(jiǎn)的余地,以后再研究了。

以上是修正WordPress密碼設(shè)置鏈接錯(cuò)誤的方法的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI