WordPress中DISALLOW_PASSWORD_RESET不生效问题求助
解决WordPress后台密码修改/重置禁用问题
你添加的DISALLOW_PASSWORD_RESET常量仅会禁用前台的密码重置请求流程,但后台用户编辑页面、个人资料页的密码生成/修改功能不受这个常量控制,需要通过额外的钩子来彻底禁用。以下是具体解决方案:
方法1:隐藏后台密码修改字段
将以下代码添加到主题的functions.php文件(推荐使用子主题,避免主题更新丢失代码)或自定义插件中:
// 隐藏用户编辑页和个人资料页的密码字段 add_action('admin_head-user-edit.php', 'hide_password_fields'); add_action('admin_head-profile.php', 'hide_password_fields'); function hide_password_fields() { echo '<style> .user-pass1-wrap, .user-pass2-wrap, .pw-weak { display: none !important; } </style>'; }
方法2:彻底阻止密码更新操作
如果需要从逻辑层面阻止任何密码修改请求(包括通过代码、API发起的修改),可以添加以下钩子:
// 拦截用户密码更新请求 add_filter('pre_user_update', BlockPasswordUpdate, 10, 2); function BlockPasswordUpdate($user_id, $userdata) { if (!empty($userdata['user_pass'])) { wp_die('密码修改功能已被禁用'); } return $user_id; } // 同时隐藏密码字段 add_action('show_user_profile', 'remove_profile_password_section'); add_action('edit_user_profile', 'remove_profile_password_section'); function remove_profile_password_section($user) { ?> <style> .user-pass1-wrap, .user-pass2-wrap { display: none; } </style> <?php }
完整方案
保留你已在wp-config.php中添加的代码:
define('DISALLOW_FILE_EDIT', true); define('DISALLOW_FILE_MODS', true); define('DISALLOW_FILE_DELETE', true); define('DISALLOW_PASSWORD_RESET', true);
再结合上述任意一种钩子代码,即可同时禁用前台密码重置和后台密码修改功能。
内容的提问来源于stack exchange,提问作者sohag513
相关产品推荐
相关产品推荐

