您好,登錄后才能下訂單哦!
小編給大家分享一下修正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è)資訊頻道!
免責(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)容。