如何在注销和会话到期时删除用户?

时间:2014-02-05 作者:David Labbe

我正在寻找一种方法来删除用户时,他们注销和会话到期时。。。不管先发生什么?原因是,所有登录身份验证都是通过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);
    }
  }
}

结束

相关推荐

order users with drag'n'drop?

有很多插件可以让你通过拖放来订购页面和/或帖子。是否有与订单用户类似的内容?如果没有,是否可以为此创建一个插件(即是否有足够的过滤器、操作等)?