是否根据用户角色为用户自定义登录失败错误消息?

时间:2020-04-26 作者:Michael R. Burke

是否有方法在登录失败后为属于某个用户角色的用户提供唯一错误?

基本上,我从一个带有不同CMS的站点导入用户,几乎不可能导入他们的密码。我想让旧网站的用户属于特定的用户角色,以获得一个错误,说明由于网站的重新开发,他们需要重置其密码以达到安全目的。

1 个回复
最合适的回答,由SO网友:Himad 整理而成

你可以挂到wp_login_errors 滤器

add_filter(\'wp_login_errors\', function($errors, $redirect_to){

    if(isset($errors->errors[\'incorrect_password\']) &&
    in_array(\'custom_role\', (array) get_user_by(\'login\', $_POST[\'log\'])->roles)){
      $errors->errors[\'incorrect_password\'][0] = \'Custom message\';
    }

  return $errors;
}, 10, 2);
编辑:

这应该适用于WooCommerce登录表单或任何其他实现wp_signon:

add_filter(\'authenticate\', function($user, $username, $password){

    if(is_wp_error($user) && 
    isset($user->errors[\'incorrect_password\']) &&
    in_array(\'custom_role\', (array) get_user_by(\'login\', $username)->roles)){
        $user->errors[\'incorrect_password\'][0] = \'Custom message\';
    }
    return $user;

}, 21, 3);

相关推荐

bloginfo url in javascript

我正在试着设置<?php bloginfo(\'template_url\'); ?> 在Javascript上的变量中,然后设置src 的img 元素,但在html中它被打印为src=\"<?php bloginfo(\'template_url\'); ?>\" 事实上url.我就是这样做的:var wpTemplateUrl = \"<?php bloginfo(\'template_url\'); ?>\"; primaryImg.src = wpTem