mysql WordPress SQL语句?-删除所有用户,其中用户角色是订阅者,并已张贴没有评论?

nx7onnlm  于 2023-01-20  发布在  Mysql
关注(0)|答案(1)|浏览(79)

我有一个数据库与30K主要是垃圾邮件用户注册。该网站以前是活跃的用户,但已经变得安静。我想清理数据库,以删除数据库中的所有订户谁没有张贴任何评论。我会离开所有其他角色(作者,贡献者...)到位。
我过去曾使用以下方法删除所有订阅者...

DELETE 
    wp_users, 
    wp_usermeta 
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%'
  • 是否可以调整上述内容,仅删除没有评论的订阅者?*

我也试过这个...

DELETE FROM `wp_users`
WHERE ID NOT IN
(SELECT DISTINCT post_author FROM `wp_posts`);

这删除了所有的订阅者,并留下了他们所有的评论。所以这是不正确的。(它看起来已经删除了所有没有帖子的用户。)
有什么想法吗?

lvmkulzt

lvmkulzt1#

你可以试试这个代码

<?php
add_action('init', 'removeusers');
function removeusers(){
$args = array(
    'role'    => 'subscriber',
    'orderby' => 'user_nicename',
    'order'   => 'ASC'
);

$users = get_users( $args ); 
   foreach ( $users as $user ) {

   $args = array('user_id' => $user->ID);
   $usercomment = get_comments($args);

   if(count($usercomment) < 1){
       require_once(ABSPATH.'wp-admin/includes/user.php' );
       $current_user = wp_get_current_user();
      wp_delete_user( $user->ID );
   } 
   }
}
?>

相关问题