您能否告诉我如何在登录时检查用户状态?
我在user_flag
表中添加了一个名为wp_users
的新字段来控制用户状态。 user_flag
的值为active
或deactivate
。
我想在用户登录时检查此字段的值。
active
,则用户可以继续登录deactivate
,则用户无法登录,并会显示一条消息,通知用户他的帐户已停用,他需要联系管理员重新激活帐户才能使他能够登录。我查看了wp-login.php
文件,但不知道在哪里编写代码来检查上面的逻辑,请问您在登录时检查user_flag
的位置?
非常感谢你。
答案 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