登录时检查用户元数据

时间:2018-06-30 作者:Philipp K

在我的网站上,用户的元数据属性设置为true或false,这取决于他们是否确认了自己的电子邮件地址。我试图不让他们登录,如果他们还没有确认他们的电子邮件,但让他们登录,如果他们有。

为了实现这一点,我在函数中添加了以下代码。php文件。然而,有了它,任何人都无法登录。哪里出了错?

<?php
function isUserActivated($user){
    $userStatus = get_user_meta($user, \'account_activated\', true);
    $login_page  = home_url(\'/login/\');
    if($userStatus == 0){
        wp_redirect($login_page . "?login=failed");
        exit;
    }
}

add_filter(\'wp_authenticate_user\', \'isUserActivated\');

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

如果使用过滤器wp_authenticate_user 您获得了需要使用用户ID来获取用户元的用户对象

function isUserActivated($user){
    $userStatus = get_user_meta($user->ID, \'account_activated\', true);

    // for testing $userStatus = 1;
    $login_page  = home_url(\'/login/\');
    if($userStatus == 0){
        wp_redirect($login_page . "?login=failed");
        exit;
    }

    return $user;
}

add_filter(\'wp_authenticate_user\', \'isUserActivated\');
但我认为最好用行动wp_authenticate 因为它在authenticate 滤器

function isUserActivated($username){

    // First need to get the user object
    $user = get_user_by(\'login\', $username);
    if(!$user) {
        $user = get_user_by(\'email\', $username);
        if(!$user) {
            return $username;
        }
    }

    $userStatus = get_user_meta($user->ID, \'account_activated\', true);

    //for testing $userStatus = 1;
    $login_page  = home_url(\'/login/\');
    if($userStatus == 0){
        wp_redirect($login_page . "?login=failed");
        exit;
    }

}

add_action(\'wp_authenticate\', \'isUserActivated\');

结束

相关推荐

Wp-login.php注册/丢失按钮的密码链接?

如何设置wp登录的样式。php注册/丢失密码链接到按钮,以简化移动UI?在哪里可以找到将ahref附加到提交的HTML?那个按钮的样式是哪个CSS文件?无需更改对操作的调用,只需将文本链接更改为按钮即可!任何帮助或指导都将不胜感激!