【问题标题】:Change/filter text for no_password_reset error message更改/过滤 no_password_reset 错误消息的文本
【发布时间】:2014-07-10 21:45:03
【问题描述】:

我有什么:

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

我需要什么:

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

我的代码:

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

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,为什么这不起作用?

【问题讨论】:

  • 您链接到 retrieve_password 过滤器,但您将函数连接到 wp_login_errors 过滤器。你为什么这样做?
  • @henrywright - 我希望wp_login_errors 能够普遍处理登录和密码重置的错误。我尝试连接到retrieve_password,但我的代码仍然没有生效。我不知道以何种方式处理禁用密码重置的错误。
  • 你在使用 WooCommerce 吗?
  • @doublesharp - 我的主题是为支持 WooCommerce 而构建的,但在我开发网站的其余部分时,插件本身目前已停用。
  • 不确定...据我所知,该字符串仅在 WooCommerce 中找到。

标签: php wordpress error-handling


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2012-12-14
    • 2017-09-03
    • 2020-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-03
    • 2020-12-01
    • 1970-01-01
    相关资源
    最近更新 更多