我有一个类似的问题,在阅读了这个问题后,我制作了这个插件(根据您的问题改编)。
安装后admin menu 在下面Users 调用Bulk User Delete 当您转到此页面时,它会批量删除用户,根据您的sql查询一次删除20个用户(我的原始查询略有不同)。
您可以使批处理变小或变大,但这允许您在没有服务器超时的情况下删除许多用户,大量垃圾邮件注册可能需要几分钟的时间。
它使用jquery在每个批处理完成后重新加载页面(我想这可以用ajax完成,但我需要一些快速的东西)。
也许其他人会觉得这很有帮助,您很可能需要根据您的情况调整sql查询。
<?php
/*
Plugin Name: Bulk Delete Spam Users
Description: Delete the spam sign ups
Version: 0.1
Author: Steven
Text Domain: bulk-delete-spam-users
*/
add_action(\'admin_menu\', \'my_users_menu\');
function my_users_menu() {
add_users_page(\'Bulk User Delete\', \'Bulk User Delete\', \'read\', \'bulk-user-delete\', \'active_users_nodel\');
}
function active_users_nodel() {
global $wpdb;
$result = array();
$result = $wpdb->get_results(\'
SELECT wp_users.id, wp_users.user_login FROM wp_users
INNER JOIN wp_usermeta ON wp_users.ID = wp_usermeta.user_id
WHERE meta_key = "wp_capabilities"
AND meta_value LIKE "%subscriber%"
\');
$users = $result;
$i = 0;
echo \'<div class="bud-box">\';
$users_remain = $users ? \'true\' : \'false\';
$current_user = wp_get_current_user();
echo \'<strong>Orphaned content will be reassigned to:</strong><br />\';
echo \'Username: \' . $current_user->user_login . \'<br />\';
echo \'User ID: \' . $current_user->ID . \'<br />\';
<h3>currently deleting...</h3>
foreach($users as $user) {
$i++;
if($i < 20) {
wp_delete_user( $user->ID, $current_user->ID );
var_dump($user->user_login);
}
}
echo \'</div>\';
?>
<script>
(function($){
$(document).ready(function(){
var uremain = <?php echo $users_remain; ?>;
if( uremain == true){
location.reload();
}
});
})(jQuery);
</script>
<?php } ?>