你有想过去掉 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 文件夹下。
然后,回到网站后台,去插件选项里激活这个插件。其实这就相当于自己写了个插件而已。这段代码会禁止所以用户通过邮件修改密码,包括管理员自己。但是管理员可以在后台重设密码。
发表回复