Come eliminare i clienti di un Woocommerce che sembrano essere spam
Mi è capitato di aver sotto mano un ecommerce costruito con Woocommerce che aveva più di 20mila utenti registrati e che erano palesemente spam.
Come fai a capire se i tuoi utenti non sono reali e se vale la pena alleggerire il tuo data base?
Beh per prima cosa se le mail sono del tipo: xfsfsdfsdf@xme.it o 12887776880@qualcosa.com, se i nomi e cognomi sono tipo SDdeedjfsdf GdsDSFssdfs allora puoi considerare quell’utente con un utente non reale.
Come i tuoi moduli contatto anche l’iscrizione al sito è sottoposto a spam e se non ne hai strettamente bisogno sarebbe sempre meglio chiudere le iscrizioni al tuo sito da Impostazioni > Generali > Chiunque può registrarsi.

Come Eliminare I Clienti Di Un Woocommerce Che Sembrano Essere Spam
Se non puoi farlo perchè il tuo sito è un ecommerce e la registrazione è necessaria allora con questa guida ti darò istruzioni su come pulire il data base da utenti non desiderati.
Gli utenti non desiderati sono praticamente quelli che non hanno creato post o non hanno creato ordini. Sono iscrizioni latenti spesso fatte da bot che non servono a nulla se non a creare confusione o a creare un record in più nel tuo data base e quindi occupano spazio per nulla.
Opzione 1 – Aggiungi contatore ordini utente
Questo script inserito in functions.php ti permetterà di visualizzare nel backend del tuo sito nella lista degli utenti, quanti ordini hanno eseguito, per farti capire a colpo d’occhio quali utenti sono necessari e quali no.
add_filter( 'manage_users_columns', 'prefix5487_modify_user_columns' ); function modify_user_columns( $column ) { $column['orders'] = __( 'Order count' ); return $column; } add_filter( 'manage_users_custom_column', 'user_order_column_value', 10, 3 ); function user_order_column_value( $val, $column_name, $user_id ) { switch ($column_name) { case 'orders' : return wc_get_customer_order_count( $user_id ); default: } return $val; } add_filter( 'manage_users_sortable_columns', 'make_registered_column_sortable' ); function make_registered_column_sortable( $columns ) { return wp_parse_args( array( 'orders' => 'orders' ), $columns ); }
Opzione 2: esegui uno script PHP per eliminare tutti gli utenti senza ordini
Questo è uno scriptino molto semplice ma molto funzionale che dovrai far girare al di fuori di WordPress (per esempio nella cartella principale del tuo sito) e andrà richiamato da browser. Sicuramente, ma dipende da quanti utenti Spam hai nel tuo sito, non andrà fatto girare solo una volta, ma parecchie volte finchè non vedrai la scritta DONE.
<?php //Load WP functions and DB access include('wp-load.php'); //required for wp_user_delete require_once( ABSPATH.'wp-admin/includes/user.php' ); //Let it run forever set_time_limit(0); //Get the $wpdb database object global $wpdb; //Loop through all users foreach($wpdb->get_results('SELECT ID from '.$wpdb->prefix.'users ORDER BY ID DESC') as $user) { //Get user object $user = get_user_by('ID', $user->ID); //Check if this user's role (customer, subscriber, author, etc.) $roles = $user->roles; if ($roles[0] == "customer") { //Check the order count and delete if it is 0 $order_count = wc_get_customer_order_count( $user->ID); if ($order_count === 0) wp_delete_user($user->ID); } } echo "DONE!";
Nel mio caso erano così tanti utenti che non bastava eseguire lo script solo una volta e siccome sarebbe stato un processo lungo da seguire, ho pianificato un cron job lato server e l’ho fatto partire ogni 15 minuti.
Questo ha risolto molti dei miei problemi, oltre a limitare la query a 200 utenti per volta.
Se riscontri problemi di questo tipo nel tuo sito, contattami attraverso questo modulo.
Lascia un Commento
Vuoi partecipare alla discussione?Sentitevi liberi di contribuire!