我有什么:
- 我有一个常规的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;
}
<标题>我的问题:考虑到我很确定我有正确的过滤器,为什么这不起作用?
标题>标题>'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'));
}