如果要删除大量用户,可以使用wp user delete wp-cli 命令以避免脚本超时。
Here\'s 删除所有用户的SQL查询示例without posts of any type and status.
因此,您可以尝试使用未经测试的一行程序:
wp user delete $(wp db query "SELECT ID FROM wp_users WHERE ID NOT IN (SELECT DISTINCT post_author FROM wp_posts ) AND ID NOT IN (1,2,3)" | tail -n +2 ) --reassign=1
或以展开形式:
wp user delete $(wp db query
"SELECT ID
FROM wp_users
WHERE ID NOT IN (
SELECT DISTINCT post_author FROM wp_posts
) AND ID NOT IN (1,2,3)" | tail -n +2
) --reassign=1
注意,我们添加了一个额外的
AND ID NOT IN (1,2,3)
确保未删除这些用户(例如管理员用户)的限制。您必须根据自己的需要以及表格前缀进行调整
wp_
.
当我为几个用户简要测试时,我注意到我必须添加tail -n +2
部分以避免标题和表格边框中的前3行wp db query
输出
在此,我们将所有帖子重新分配给用户1,以避免出现通知:
--reassign parameter not passed. All associated posts will be deleted. Proceed? [y/n]
希望您可以根据自己的需要进一步调整,比如通过添加
WHERE post_status = \'publish\'
.
Note: 请记住在测试前备份!