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


Change/filter text for no_password_reset error message

我有什么:

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

我需要什么:

我需要更改/过滤错误消息的文本,读取"不允许此用户重置密码"。

<标题>我的代码:

过滤错误消息的常规方式:

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;
}
<标题>我的问题:

考虑到我很确定我有正确的过滤器,为什么这不起作用?

'wp_login_errors'过滤器在重置密码时不起作用。

你应该使用'allow_password_reset'过滤器。您可能使用了插件或一段代码来禁用密码重置选项。如果你看到默认的错误消息,这意味着代码/插件返回了"false"布尔值,然后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'));
}