php - 更改/过滤no_password_reset错误消息的文本

标签 php wordpress error-handling

是)我有的:

  • 我有一个常规的WordPress wp-login.php登录页面。
  • 我已禁止用户请求密码重置的选项。
  • 向用户显示一条错误消息,通知他们尝试重置时禁用了重置。

  • 我需要的:

    我需要更改/过滤错误消息的文本,内容为“此用户不允许密码重置”。

    我的代码:

    通常可以过滤错误消息的常规方式:
    add_filter( 'wp_login_errors', 'override_incorrect_password_msg', 10, 2 );
    function override_incorrect_password_msg( $errors, $redirect_to ) {
        if( isset( $errors->errors['incorrect_password'] ) ) {
            $errors->errors['incorrect_password'][0] = '<span>Please provide the <strong>correct password</strong>.</span>';
        }
    
        return $errors;
    }
    

    将以上内容转换为必需的消息不起作用:
    add_filter( 'wp_login_errors', 'noreset_msg', 10, 2 );
    function noreset_msg( $errors, $redirect_to ) {
        if( isset( $errors->errors['no_password_reset'] ) ) {
            $errors->errors['no_password_reset'][0] = '<span>Password reset is not allowed for this user.</span>';
        }
    
        return $errors;
    }
    

    我的问题:

    考虑到我确定自己拥有the correct filter,为什么这不起作用?

    最佳答案

    重置密码时,“wp_login_errors”过滤器不起作用。

    您应该改用“allow_password_reset”过滤器。您可能使用了插件或一段代码来禁用密码重置选项。如果您看到默认错误消息,这意味着代码/插件返回了“false” bool(boolean) 值,则WordPress将抛出其默认消息。您可以通过以下方式抛出新的WP错误来覆盖此消息-(请注意:使用以下代码时,应删除禁用了密码重置选项的代码/插件。以下操作将禁用密码重置选项,如下所示:以及引发自定义消息)-

    add_filter( 'allow_password_reset', 'noreset_msg', 99, 2 );
    
    function noreset_msg($allow, $user_id){
    
       return new WP_Error('no_password_reset', __('Your custom message'));
    }
    

    关于php - 更改/过滤no_password_reset错误消息的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24686840/

    相关文章:

    php - WooCommerce 结帐单选按钮,根据特定项目小计设置百分比费用

    php - 将textarea中的html标签转换为富文本

    css - Wordpress 菜单 CSS 类不起作用

    Grails:如何从 Controller 逻辑返回错误消息(即不是源自域属性验证)?

    php - 为什么以及如何在此示例 PHP 代码中使用异常?

    Php 404 未找到 header

    php - 在 PHP 中执行 Hook 方法

    php - 在 Woocommerce 的 PHP 代码中插入类

    php - WordPress 插件 WooCommerce,自定义支付网关设置未保存

    php - 自动将mysql错误和其他错误发送到日志文件的方法?