wordpress删除不活跃用户,删除最近1年未登录用户,删除空闲用户
最近一个 wordpress 网址突然很卡,发现网址有很多用户,准备删除一些之前很久未登录的僵尸用户
由于wordpress网站之前按照网上教程照搬了 综合版代码 , 支持显示用户昵称、网站、注册时间、注册IP、最近登录时间、登录IP,默认按照注册时间排序:
可以在这里找到操作方法 网站wordpress大学的博客 制作用户显示最后登录时间https://www.wpdaxue.com/register-ip-multisite.html
分析数据库发现 网站的wp_usermeta数据表占用很多空间,
下面开始操作删除不活跃用户
操作前请先将数据库备份,以免操作失误误删无法找回
以下是小白手法,欢迎大神提供更好的方法
1.根据最近登录时间列出用户ID作为分析
将数据库的用户表wp_users 和用户信息表wp_usermeta 里的用户ID ,最后登录时间的标签和最后登录时间筛选出来作为分析
SELECT `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_key` LIKE 'last_login'
2.由于网站最后是2017年9月份建立的 距今差不多2年,决定删除最近半年未登录的用户
先做筛选看是否正确
先尝试筛选最后登录时间为2017年的用户,一定要用多条件查询,因为wp_usermeta表里面还有你的注册时间,也是时间格式,不用多条件查询会被误删
SELECT `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 '%2017%') AND(`wp_usermeta`.`meta_key` LIKE 'last_login')
返回数据分析一下没问题
3.分析上面筛选数据返回正确的,开始删除不活跃用户
如以下格式删除 最后登录 时间为2017年的用户,2018年的类似 条件更改为 2018- 即可
DELETE FROM `wp_users` WHERE `wp_users`.`ID` = any(SELECT `user_id` from `wp_usermeta` WHERE (`wp_usermeta`.`meta_value` LIKE '%2017%') AND(`wp_usermeta`.`meta_key` LIKE 'last_login'))
以下删除2019年每月的用户,可以一个一个月的删,如以下删除 最后登录 时间 为2019年1月的用户
DELETE FROM `wp_users` WHERE `wp_users`.`ID` = any(SELECT `user_id` from `wp_usermeta` WHERE (`wp_usermeta`.`meta_value` LIKE '%2019-01%') AND(`wp_usermeta`.`meta_key` LIKE 'last_login'))
其他月份类似………..如以下删除 删除 最后登录 时间 为2019年6月的用户
DELETE FROM `wp_users` WHERE `wp_users`.`ID` = any(SELECT `user_id` from `wp_usermeta` WHERE (`wp_usermeta`.`meta_value` LIKE '%2019-01%') AND(`wp_usermeta`.`meta_key` LIKE 'last_login'))