是)我有的:
我需要的:
我需要更改/过滤错误消息的文本,内容为“此用户不允许密码重置”。
我的代码:
通常可以过滤错误消息的常规方式:
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/