0

您知道所有这些网站如何向他们的新用户发送链接以验证他们的电子邮件地址吗?我正在通过电子邮件地址设置用户验证过程,我会将电子邮件验证链接发送到用户电子邮件,点击链接用户将被验证。

但问题是我在用户登录时设置了 usermeta 字段,该功能将检查用户是否已验证,如果已验证,它将登录,否则在我登录管理员时显示错误,它将无法访问我到管理员仪表板。

add_filter('wp_authenticate_user', 'check_user_activation_status', 10, 2);
function check_user_activation_status($user) {
    if( ! $user->has_cap('administrator') ) {
        if ( get_user_meta($user->ID ,'wp_user_level',true) != 10 ) {
            if( get_user_meta($user->ID, 'activated', true) == 'true' ) {
                return $user;
             }
        } else {
            return $user;
        } 
    }

    return new WP_Error('Account Not Active...');
}

并且登录失败后也不会显示错误文本 登录页面

对不起英语不好...

4

2 回答 2

0
/**
 * Check User Status.
 *
 * @param $user WP_User Object
 */
function check_status( WP_User $user ) {
 
    $status = get_user_meta( $user->ID, 'user_status' );
 
    if ( 1 !== (int) $status ) {
        $message = esc_html__( 'User not verified.', 'text-domain');
        return new WP_Error( 'user_not_verified', $message );
   }
 
    return $user;
}
 
add_filter( 'wp_authenticate_user', 'check_status' );
于 2021-08-18T10:33:02.940 回答
0

这个钩子传递了两个参数,$user 和 $password(明文)。为了在登录时生成错误,您需要返回一个新的 WP_Error() 对象。

https://codex.wordpress.org/Plugin_API/Filter_Reference/wp_authenticate_user

于 2019-08-28T18:16:11.803 回答