WordPress删除长时间未登录的垃圾用户

有一段时间没看网站,昨天来翻了一下,没想到飞龙出海已经有一万多注册用户了,这些用户中会员只有1000多号人,99%是注册不付费的白嫖党,可能你们觉得一万注册用户很牛逼,但是对于我来说,任何不付费的用户都是垃圾用户,留着他们没有任何意义,所以我只能把他删掉。

经过查询发现WordPress的用户都存在wp_usermeta、wp_users这两个表里面,wp_users存的是用户主要信息,wp_usermeta存的是用户的扩展信息,比如用户最后登录时间,会员日期,会员级别等等。

下面开始尝试删除长时间未登录用户,比如我们要删除最后登录时间为2022年的用户,在我们没有把握之前,最好先查询一下最后登录时间为2022年的用户,看能否查询到,能查到以后再执行删除命令。

查询代码为:

SELECTS `ID`,`user_id`,`meta_key`,`meta_value` from `wp_users` inner join `wp_usermeta` on `wp_users`.`ID`=`wp_usermeta`.`user_id` WHERE( `wp_usermeta`.`meta_value` LIKE '%2022%') AND(`wp_usermeta`.`meta_key` LIKE 'last_login')
/*SELECTS 转 SELECT*/

当我们执行查询代码发现能查出来以后,再执行删除一下命令,下面命令的意思是删除最后登录时间为2022年的用户

DELETE FROM `wp_users` WHERE `wp_users`.`ID` = any(SELECT `user_id` from `wp_usermeta` WHERE (`wp_usermeta`.`meta_value` LIKE '%2023%') AND(`wp_usermeta`.`meta_key` LIKE 'last_login'))

最后我用到的,不一定和你们的业务逻辑相符,不用乱用

DELETE FROM `wp_users` WHERE `wp_users`.`ID` = any(SELECT `user_id` from `wp_usermeta` WHERE (`wp_usermeta`.`meta_value` LIKE '%2022%') AND(`wp_usermeta`.`meta_key` LIKE 'last_login'));
DELETE FROM `wp_users` WHERE `wp_users`.`ID` = any(SELECT `user_id` from `wp_usermeta` WHERE (`wp_usermeta`.`meta_value` LIKE '%2023-01%') AND(`wp_usermeta`.`meta_key` LIKE 'last_login'));
DELETE FROM `wp_users` WHERE `wp_users`.`ID` = any(SELECT `user_id` from `wp_usermeta` WHERE (`wp_usermeta`.`meta_value` LIKE '%2023-02%') AND(`wp_usermeta`.`meta_key` LIKE 'last_login'));
DELETE FROM `wp_users` WHERE `wp_users`.`ID` = any(SELECT `user_id` from `wp_usermeta` WHERE (`wp_usermeta`.`meta_value` LIKE '%2023-03%') AND(`wp_usermeta`.`meta_key` LIKE 'last_login'));
DELETE FROM `wp_users` WHERE `wp_users`.`ID` = any(SELECT `user_id` from `wp_usermeta` WHERE (`wp_usermeta`.`meta_value` LIKE '%2023-04%') AND(`wp_usermeta`.`meta_key` LIKE 'last_login'));
DELETE FROM `wp_users` WHERE `wp_users`.`ID` = any(SELECT `user_id` from `wp_usermeta` WHERE (`wp_usermeta`.`meta_value` LIKE '%2023-05%') AND(`wp_usermeta`.`meta_key` LIKE 'last_login'));

你可能感兴趣的:(数据库,sql)