gpt4 book ai didi

批量删除垃圾邮件 Wordpress 用户的 MySQL 查询

转载 作者:行者123 更新时间:2023-11-29 06:46:08 27 4
gpt4 key购买 nike

我的成员(member)网站已被垃圾邮件注册淹没。我注意到的一件事是,很多垃圾邮件发送者的电子邮件都是 @hotmail.com

我想做的是删除所有订阅者和拥有@hotmail 电子邮件地址的用户。

用户数据在 wp_userswp_usermeta 两个表中,据我所知,我需要删除两个表中的数据以有效删除用户。我还没有设法找到可以从 mysql 中跨两个表删除所有用户数据的查询。

我可以使用这个查询删除 wp_user 表中的用户

DELETE 
FROM wp_users
WHERE user_email LIKE "%@hotmail%"

但我还需要从 wp_usersmeta 表中删除数据,并确保我只删除订阅者(meta_key = wp_capabilities and meta_value = subscriber)。

有什么办法可以做到这一点吗?我缺少的任何其他表中是否有用户数据?订阅者没有任何与之关联的帖子。

我见过一些用于垃圾邮件注册的插件,但它们是预防性的。现在,我需要一种方法来摆脱这些恼人的垃圾邮件发送者电子邮件。

最佳答案

您可以使用 INNER JOIN使用 DELETE 时在 MySQL 中。

DELETE
FROM wp_users
INNER JOIN wp_usermeta ON wp_users.ID = wp_usermeta.user_id
WHERE wp_users.user_email LIKE "%@hotmail%" AND [etc, etc.]

此解决方案给您带来了两个(或可能更多 ;-))问题:1) 您无法重新分配帖子和链接(如果您愿意)和 2) 您必须处理 MySQL 中的 JSON 值。

更好的方法是使用 WordPress 函数来完成这项工作。您可以使用 get_users搜索用户和 wp_delete_user删除用户。

<?php $args = array(
'blog_id' => $GLOBALS['blog_id'],
'role' => 'subscriber',
'search' => '*@hotmail.com'
);

$blogusers = get_users($args);
foreach ($blogusers as $user) {
wp_delete_user( $user->ID, $reassign );
}
?>

请阅读Function Reference : 它将帮助您解决这个问题和 future 的问题。

关于批量删除垃圾邮件 Wordpress 用户的 MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18610665/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com