2

Bots are ever so slowly taking over our existence and even the greatest captcha or guard will fail at points. This may result in a high amount of spam accounts that needs to be deleted.

Removing these manually via wp-admin is painful. Any way to quickly remove these?

1

Yes. There are a variety of ways to do this, primarily, we'll need to tackle the wp_delete_user() function.

Your first task, and the tricky one, is to identity which accounts are spam, and which are real. This can be quite an adventure if your site gains new users regularly.

With the following example, we target two values, the user's email account and meta_data.

In this case, we have an idea if it's a spam account by interpreting the email address. So let's add a list in an array:

$emails = array(
    'mail@stackexchange.com',
    'spam@spam.com',
    'mail@ma.tt',
);

Then we have a custom user meta data named points:

$meta_key = 'points';

And in our case, we know that if the meta key value is 10, then it is definitely a spam user. So we set the value:

$meta_key = 10;

Now let's put it together into a function:

function wpse_delete_users_by_email($emails, $meta_key, $meta_value) {

    if (!is_array($emails)) return;

    foreach ($emails as $email) {

        // get user data via email
        $user = get_user_by( 'email', $email );
        $user_id = $user->ID;
        $user_email = $user->user_email;

        // get
        $meta_data = get_user_meta($user_id, $meta_key, TRUE);

        // if meta data equals the meta value
        if ($meta_data == $meta_value) {

            // confirm that emails match
            if ($user_email == $email) {

                // must include this, or it will throw a 'call to undefined function' error
                require_once(ABSPATH.'wp-admin/includes/user.php' );

                // delete spam user
                wp_delete_user( $user_id );

                // display results
                echo '<br>' . $email;

            }

        }

    }

}

Simple stuff, but sometimes when dealing with spam and bots, one less headache can be valuable.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.