web-dev-qa-db-fra.com

Supprimer en masse les comptes spam

Les bots occupent très lentement notre existence et même le plus grand captcha ou le meilleur garde échouera à certains points. Cela peut entraîner la suppression d'un grand nombre de comptes de spam.

Les supprimer manuellement via wp-admin est douloureux. Un moyen de les supprimer rapidement?

2
Christine Cooper

Oui. Il y a différentes façons de le faire. Nous devons d'abord nous attaquer à la fonction wp_delete_user () .

Votre première tâche, la plus délicate, consiste à identifier les comptes qui sont du spam et ceux qui sont réels. Cela peut être tout à fait une aventure si votre site gagne régulièrement de nouveaux utilisateurs.

Avec l'exemple suivant, nous ciblons deux valeurs, le compte email de l'utilisateur et meta_data.

Dans ce cas, nous avons une idée s'il s'agit d'un compte spam en interprétant l'adresse e-mail. Ajoutons donc une liste dans un tableau:

$emails = array(
    '[email protected]',
    '[email protected]',
    '[email protected]',
);

Nous avons ensuite une méta-donnée utilisateur personnalisée nommée points:

$meta_key = 'points';

Et dans notre cas, nous savons que si la valeur de la méta-clé est 10, il s’agit bien d’un utilisateur de spam. Donc nous définissons la valeur:

$meta_key = 10;

Maintenant assemblons-le dans une fonction:

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;

            }

        }

    }

}

Des choses simples, mais parfois, lorsqu'il s'agit de spam et de bots, un mal de tête de moins peut être précieux.

1
Christine Cooper