我已经建立了WP Multisite,并编写了一个功能每天删除除一个博客以外的所有博客。现在,当您使用wpmu\\u delete\\u blog()函数时,博客将被删除,但其用户仍然存在,并且不会与任何站点关联。我想得到所有这些用户,并删除博客后立即删除他们。我创建的所有用户都被赋予了“demouser”角色。我该怎么做?
删除WordPress多站点中的孤立用户
1 个回复
最合适的回答,由SO网友:Sven 整理而成
您需要选择所有可用的用户(请参阅$users
(见下文)循环查看每一个,并确定它是否是demouser;要删除没有关联站点的所有用户(请参阅empty($user_blogs)
下面)您可以致电wpmu_delete_user()
(this will require to load ms.php
, 如果您正在加载主题或插件)。
只需在代码中删除博客的部分之后添加以下代码片段:
global $wpdb;
$users = $wpdb->get_results("SELECT ID, user_login FROM $wpdb->users");
foreach ( $users as $user ) :
$user_login = $user->user_login; // get login
$user_id = $user->ID; // get ID
// check for name
if ( $user_login == \'demouser\' ) :
$user_blogs = get_blogs_of_user( $user_id ); // get related sites
// check if empty
if ( empty($user_blogs) ) :
require_once ABSPATH . \'wp-admin/includes/ms.php\';
wpmu_delete_user( $user_id ); // delete user
endif;
endif;
endforeach;
请注意这一点,因为它将删除未分配的用户,您将无法还原已删除的用户!结束