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

时间:2013-06-01 14:35:59

标签: wordpress login frontend

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

我在user_flag表中添加了一个名为wp_users的新字段来控制用户状态。 user_flag的值为activedeactivate

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

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

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

非常感谢你。

1 个答案:

答案 0 :(得分:9)

停止尝试修改核心代码并学习使用可插拔架构。还要停止修改核心数据库表。您可以使用add_user_meta在usermeta表中为用户存储其他字段,并使用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);

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