Cambiare ruolo Woocommerce automaticamente dopo un acquisto

Cambiare ruolo su Woocommerce dopo l'acquisto di un prodotto in maniera automatica? Su Wordpress si può fare in pochi semplici passi!
Cambio Ruolo Woocommerce

Durante lo sviluppo di un progetto abbastanza “top secret” (per ora), ho avuto la necessità di implementare un qualcosa che permetta di cambiare ruolo ad un utente appena acquista un qualsiasi prodotto tramite il nostro amato Woocommerce.

Come fare?

C’è un passaggio preliminare da effettuare, prima di poter inserire il nostro codice magico.

Come sappiamo, su WordPress possiamo assegnare diversi ruoli con funzioni specifiche: dal classico Sottoscrittore, all’Amministratore passando per l’Editor. Di default, quando un utente si registra automaticamente sul nostro sito questo prenderà il ruolo Sottoscrittore. Se si registrerà tramite il classico form predefinito di Woocommerce, prenderà il ruolo di Cliente (Customer).

Da dove nasce l’esigneza nel caso specifico? Nel progetto in questione, avevamo bisogno di generare alcune email automatiche con Active Campaign relative al ruolo dell’utente: se si fosse solo iscritto senza comprare avrebbe ricevuto una mail diversa da chi, poi, avrebbe comprato.

Come dicevamo, il passaggio preliminare è quello di installare un plugin per la gestione dei ruoli, tipo Members e duplicare il ruolo Cliente (Customers) dandogli un nome del tipo “Acquirente”.

Una volta fatto questo, aggiungiamo al nostro file function.php (o usando un plugin tipo Code Snippets) la porzione di codice che trovate qui in basso.

add_action( 'woocommerce_order_status_processing', 'change_role_on_purchase', 10, 2 );
add_action( 'woocommerce_order_status_completed', 'change_role_on_purchase', 10, 2 );
function change_role_on_purchase( $order_id, $order ) {
    $user = $order->get_user(); 

    if( is_a( $user, 'WP_User' ) && in_array( 'customer', (array) $user->roles ) ) {
        $user->remove_role( 'customer' ); 
        $user->add_role( 'acquirente' );
    }
}

Cosa fa questa funzione? In pratica appena un ordine viene prima processato e poi completato, viene effettuato un controllo sul ruolo dell’utente che ha acquistato: se quell utente ha come ruolo “customer” allora cambia ruolo in “acquirente” (questo è il mio caso in cui ho dato al nuovo ruolo il nome Acquirente, ma voi potete dargliene qualsiasi e poi sostituire la stringa acquirente con quello che è il vostro ruolo).

Da ora, sapete come cambiare ruolo ad un utente su Woocommerce, quando effettuerà un acquisto!

 

Commenta il post