2

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

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

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

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

我查看了wp-login.php文件,但不知道在哪里编写代码来检查上述逻辑,你能告诉我user_flag登录时在哪里检查吗?

太感谢了。

4

1 回答 1

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);

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

于 2013-06-01T14:51:11.843 回答