你有想過去掉 WordPress 的密碼重設功能嗎?在預設模式下,WordPress 是允許註冊的使用者透過郵件來重設密碼。有些朋友可能想禁用這個重設密碼的功能,這篇文章,我們來探討下如果實現。
為什麼要移除 WordPress 的密碼重設功能?
如果你允許讀者在你的 WP 網站裡註冊,那麼註冊使用者肯定免不了忘記密碼,就會經常性的重設。過多的重設密碼,可能會佔用伺服器資源;還有就是有些站長有強迫症,就不讓你改密碼……或者你的網站只是一個演示站,沒必要使用者改密碼。林林總總的問題,不一而足,好吧,來說說怎麼移除 WordPress 的密碼重置功能。
方法一、使用 Plainview Protect Passwords 外掛
使用外掛是最身心的事,適合那些不喜歡折騰的博主。 Plainview Protect Passwords 外掛是非常強大的,甚至可以選擇禁止某一使用者組,而不是所有使用者。
首先,安裝和啟用這個外掛,進入到配置頁面:
設定介面一目瞭然,你可以全選,也可以選擇某幾個使用者組,完全自定義來操作。當設定好某一使用者組不能修改密碼之後,可以看到該使用者在後臺就不能修改密碼了:
方法二、改原始碼修改
這個方法不適合初學者,畢竟要懂得些許程式碼知識。在修改前需要對整個網站做個備份,以防萬一。
首先新建一個 disable-password-reset.php 這樣的 PHP 檔案,把下面程式碼複製進去,儲存。
<?php /* * Plugin Name: Disable Password Reset * Description: Disable password reset functionality. Only users with administrator role will be able to change passwords from inside admin area. * Version: 1.0 * Author: WPBeginner * Author URI: http://wpbeginner.com */ class Password_Reset_Removed { function __construct() { add_filter( 'show_password_fields', array( $this, 'disable' ) ); add_filter( 'allow_password_reset', array( $this, 'disable' ) ); add_filter( 'gettext', array( $this, 'remove' ) ); } function disable() { if ( is_admin() ) { $userdata = wp_get_current_user(); $user = new WP_User($userdata->ID); if ( !empty( $user->roles ) && is_array( $user->roles ) && $user->roles[0] == 'administrator' ) return true; } return false; } function remove($text) { return str_replace( array('Lost your password?', 'Lost your password'), '', trim($text, '?') ); } } $pass_reset_removed = new Password_Reset_Removed(); ?>
然後,透過 FTP,將這個檔案傳輸到/wp-content/plugins 資料夾下。
然後,回到網站後臺,去外掛選項裡啟用這個外掛。其實這就相當於自己寫了個外掛而已。這段程式碼會禁止所以使用者透過郵件修改密碼,包括管理員自己。但是管理員可以在後臺重設密碼。
發表回覆