我正在寻找一种方法来删除用户时,他们注销和会话到期时。。。不管先发生什么?原因是,所有登录身份验证都是通过api向另一家公司进行的,并检查该用户是否是该公司的注册用户。然后登录将为他们提供WP登录验证。所有这些都可以,但我现在想在用户注销或会话过期时删除他们。谢谢
如何在注销和会话到期时删除用户?
3 个回复
SO网友:David Labbe
所以这就是我所做的。。。请记住,这是针对多站点的,我称之为在类中调用它。”“客户端”是一个自定义用户角色,在创建用户时创建并提供给用户。
function delete_user() {
global $current_user;
if(in_array(\'client\', $current_user->roles )){
if(!function_exists(\'wp_delete_user\')) {
include(ABSPATH . "wp-admin/includes/ms.php");
}
wpmu_delete_user( $current_user->ID );
}
}
add_action(\'clear_auth_cookie\', \'delete_user\');
我有一个问题。。。这在用户注销时起作用,但何时它将自己运行。饼干什么时候过期?SO网友:T.Todua
如果您有错误,您应该:
.........
if(!function_exists(\'wp_delete_user\')) { include(ABSPATH . "wp-admin/includes/user.php"); }
if(!function_exists(\'wpmu_delete_user\')){ include(ABSPATH . "wp-admin/includes/ms.php"); }
wpmu_delete_user( $current_user->ID );
..........
SO网友:MagniGeeks Technologies
我认为首先你必须在用户注销之前更新一个meta。将有一个函数在init hook中运行,该函数将检查meta值。如果该元值存在,那么它将删除id具有该元键值对的用户。
function users_last_login() {
$userinfo = wp_get_current_user();
update_user_meta( $userinfo->ID, \'last_action\', \'logout\' );
}
add_action(\'clear_auth_cookie\', \'users_last_login\', 10);
add_action(\'init\', \'delete_users\' );
function delete_users() {
$users = get_users(
array(
\'meta_key\' => \'last_action\',
\'meta_value\' => \'logout\',
)
);
if( !empty($users) ) {
foreach( $users as $user ) {
wp_delete_user($user->data->ID);
}
}
}
结束