登录wordpress时如何检查用户状态

kis*_*ary 2 wordpress frontend login

你能否告诉我如何在登录时检查用户状态?

我添加了一个user_flagwp_users表中命名的新字段来控制用户状态.user_flag具有active或的价值deactivate.

我想在用户登录时检查此字段的值.

  • 如果值为active,则用户可以继续登录,
  • 但是如果值是deactivate,则用户无法登录,并且将显示一条消息以通知用户他的帐户已停用,并且他需要联系管理员以重新激活帐户以便他能够登录.

我查看了wp-login.php文件,但不知道在哪里编写代码来检查上面的逻辑,请问您可以user_flag在登录时查看我在哪里检查?

非常感谢.

Rob*_*Rob 9

停止尝试修改核心代码并学习使用可插拔架构.还要停止修改核心数据库表.您可以在usermeta表中为用户存储其他字段,add_user_meta并使用它们进行检索get_user_meta.如果您开始修改核心代码和数据库表,您将永远无法升级wordpress.

要回答您的问题,请在functions.php中使用以下内容

add_filter('wp_authenticate_user', function($user) {
    if (get_user_meta($user->ID, 'user_flag', true) == 'active') {
        return $user;
    }
    return new WP_Error('Account Not Active...');
}, 10, 2);
Run Code Online (Sandbox Code Playgroud)

请参阅https://codex.wordpress.org/Plugin_API/Filter_Reference/wp_authenticate_user