Eliminare account spam WooCommerce

Come eliminare gli account spam in WooCommerce

Tempo di lettura: 7 minuti

Chi gestisce un e-commerce con WooCommerce sa bene che gli account spam possono diventare un problema fastidioso: falsi utenti registrati, ordini inesistenti o addirittura tentativi di phishing. Oltre a sporcare il database, questi account possono rallentare la gestione del sito e compromettere la sicurezza.
Vediamo come eliminarli e prevenirne la creazione.

Perché nascono gli account spam su WooCommerce

Gli spammer sfruttano i form di registrazione degli shop per creare utenti automatici. Questo accade soprattutto quando:

  • la registrazione è libera e non protetta,
  • non ci sono sistemi di verifica (CAPTCHA o email di conferma),
  • il sito non ha limiti sul numero di tentativi di accesso.

Come individuare gli account spam

Spesso gli account spam hanno caratteristiche ricorrenti:

  • email sospette (es. con domini poco noti o numeri casuali),
  • nomi utente incomprensibili,
  • assenza di ordini reali,
  • IP provenienti da paesi inusuali per il tuo target.

Per controllare, vai su Utenti → Tutti gli utenti e filtra per “Cliente” oppure ordina per data di registrazione.

Come eliminare manualmente gli account spam

Se il numero non è eccessivo, puoi rimuoverli a mano:

  1. Accedi alla Bacheca WordPress.
  2. Vai in Utenti → Tutti gli utenti.
  3. Seleziona gli account sospetti.
  4. Dal menu a tendina scegli Elimina.

WooCommerce ti chiederà se associare gli ordini a un altro utente o cancellarli: nel caso di spam puro, puoi eliminarli senza problemi.

Come cancellare account spam in blocco

Se hai centinaia di registrazioni fasulle, agire in blocco ti permetterà di risparmiare tempo. Alcuni metodi:

  • Plugin dedicati come WP Bulk Delete o Smart Cleanup Tools, che permettono di eliminare utenti in base a criteri (es. nessun ordine, registrati in un certo periodo, email con pattern sospetti).
  • Query SQL dirette sul database (consigliato solo se hai esperienza), ad esempio per rimuovere tutti gli utenti con ruolo “customer” senza ordini associati.
  • Codice PHP da inserire nel file functions.php del tuo tema (consigliato solo se ti senti sicurə nella modifica dei template file del tuo sito).

Eliminare tutti i clienti senza ordini

Spesso gli account spam si registrano senza mai completare un acquisto. Un metodo efficace è cancellare in blocco tutti i clienti senza ordini associati.

Metodo con plugin

Puoi usare strumenti come:

  • WP Bulk Delete → permette di impostare filtri (ruolo “customer” e “numero di ordini = 0”).
  • Smart Cleanup Tools → con un solo click elimina utenti inattivi o senza attività.

Metodo con codice SQL (avanzato)

Se hai accesso al database via phpMyAdmin, puoi usare una query SQL per eliminare i clienti senza ordini. Prima di eseguirla, fai sempre un backup del database.

DELETE u
FROM wp_users u
INNER JOIN wp_usermeta um ON u.ID = um.user_id
LEFT JOIN wp_posts p ON u.ID = p.post_author AND p.post_type = 'shop_order'
WHERE um.meta_key = 'wp_capabilities'
AND um.meta_value LIKE '%customer%'
AND p.ID IS NULL;

⚠️ Nota: il prefisso wp_ potrebbe essere diverso nel tuo database (es. wp123_). Assicurati di adattarlo.

Metodo con codice PHP (avanzato)

Se preferisci agire direttamente da Bacheca WordPress, puoi usare uno snippet PHP che aggiunge una pagina sotto Strumenti, dove prima viene mostrato quanti clienti verrebbero eliminati e solo dopo puoi confermare.

Inserisci questo codice nel file functions.php del tema child o in un plugin personalizzato:

// Aggiunge una voce di menu negli Strumenti
add_action('admin_menu', function() {
    add_management_page(
        'Elimina clienti senza ordini',
        'Elimina clienti senza ordini',
        'manage_options',
        'delete-customers-no-orders',
        'delete_customers_no_orders_page'
    );
});
// Pagina di gestione
function delete_customers_no_orders_page() {
    echo '<div class="wrap">';
    echo '<h1>Elimina clienti senza ordini</h1>';
    echo '<p>Questa funzione rimuove tutti gli utenti con ruolo "customer" che non hanno mai effettuato acquisti.</p>';
    if (isset($_POST['preview_customers_no_orders']) && check_admin_referer('preview_customers_no_orders_action')) {
        $count = count_customers_no_orders();
        if ($count > 0) {
            echo '<div class="notice notice-warning"><p>⚠️ Trovati <strong>' . $count . '</strong> clienti senza ordini.</p></div>';
            echo '<form method="post">';
            wp_nonce_field('delete_customers_no_orders_action');
            submit_button('Conferma ed elimina tutti i clienti senza ordini', 'delete', 'delete_customers_no_orders');
            echo '</form>';
        } else {
            echo '<div class="updated"><p>✅ Nessun cliente senza ordini trovato.</p></div>';
        }
    } elseif (isset($_POST['delete_customers_no_orders']) && check_admin_referer('delete_customers_no_orders_action')) {
        $deleted = delete_customers_no_orders();
        echo '<div class="updated"><p>✅ Eliminati ' . $deleted . ' clienti senza ordini.</p></div>';
    } else {
        echo '<form method="post">';
        wp_nonce_field('preview_customers_no_orders_action');
        submit_button('Verifica quanti clienti senza ordini ci sono', 'primary', 'preview_customers_no_orders');
        echo '</form>';
    }
    echo '</div>';
}
// Conta clienti senza ordini
function count_customers_no_orders() {
    global $wpdb;
    $user_ids = $wpdb->get_col("
        SELECT u.ID
        FROM {$wpdb->users} u
        INNER JOIN {$wpdb->usermeta} um ON u.ID = um.user_id
        LEFT JOIN {$wpdb->posts} p ON u.ID = p.post_author AND p.post_type = 'shop_order'
        WHERE um.meta_key = '{$wpdb->prefix}capabilities'
        AND um.meta_value LIKE '%customer%'
        AND p.ID IS NULL
    ");
    return count($user_ids);
}
// Elimina clienti senza ordini
function delete_customers_no_orders() {
    global $wpdb;
    $user_ids = $wpdb->get_col("
        SELECT u.ID
        FROM {$wpdb->users} u
        INNER JOIN {$wpdb->usermeta} um ON u.ID = um.user_id
        LEFT JOIN {$wpdb->posts} p ON u.ID = p.post_author AND p.post_type = 'shop_order'
        WHERE um.meta_key = '{$wpdb->prefix}capabilities'
        AND um.meta_value LIKE '%customer%'
        AND p.ID IS NULL
    ");
    $deleted = 0;
    foreach ($user_ids as $user_id) {
        require_once(ABSPATH.'wp-admin/includes/user.php');
        wp_delete_user($user_id);
        $deleted++;
    }
    return $deleted;
}

Con questo snippet:

  • puoi prima vedere quanti clienti inattivi ci sono,
  • e solo se confermi, procedere alla cancellazione.
  • in più, tutto avviene dalla Bacheca, senza dover toccare phpMyAdmin.

Verifica email con Customer Email Verification for WooCommerce

Un metodo molto efficace per ridurre drasticamente la creazione di account spam è utilizzare il plugin Customer Email Verification for WooCommerce.
Con questo strumento, i nuovi utenti devono confermare l’indirizzo email prima che il loro account venga attivato. In questo modo:

  • gli account falsi con indirizzi inesistenti vengono bloccati,
  • riduci il rischio di ordini fasulli o tentativi di truffa,
  • migliori la qualità del tuo database clienti.

Il plugin è semplice da configurare: dopo l’installazione, puoi personalizzare l’email di verifica e scegliere se bloccare completamente l’accesso fino alla conferma. In alternativa, puoi permettere agli utenti di navigare nello shop ma impedire loro di completare un ordine finché non avranno validato l’indirizzo.ce da configurare: dopo l’installazione, puoi personalizzare l’email di verifica e scegliere se bloccare completamente l’accesso fino alla conferma. In alternativa, puoi permettere agli utenti di navigare nello shop ma impedire loro di completare un ordine finché non avranno validato l’indirizzo.

Prevenire nuove registrazioni spam

Eliminare è utile, ma prevenire lo è ancora di più. Puoi:

  • Attivare reCAPTCHA nel form di registrazione e login.
  • Usare plugin anti-spam come CleanTalk o Wordfence.
  • Richiedere la conferma email prima di attivare un account.
  • Limitare i tentativi di login per bloccare i bot che provano combinazioni automatiche.

Best practice

  • Monitora periodicamente la sezione utenti.
  • Fai sempre un backup prima di cancellazioni massive.
  • Aggiorna WooCommerce e plugin di sicurezza.

Conclusione

Gli account spam su WooCommerce non sono solo un fastidio: se trascurati, possono danneggiare la tua attività. Con un mix di pulizia periodica e sistemi di prevenzione, manterrai il tuo e-commerce sicuro, snello e focalizzato sui clienti reali.