Nel precedente articolo ho spiegato come inserire dei campi personalizzati nel form di registrazione Woocommerce. Qui di seguito un’ulteriore integrazione che permette di scegliere il ruolo wordpress agli utenti che si iscrivono sul vostro sito.
L’integrazione è molto semplice e bisogna sempre intervenire sul file function.php del vostro tema. Ecco il codice che ho utilizzato:
function wooc_extra_register_fields1() { global $wp_roles; ?> <p class="form-row form-row-wide"> <label for="reg_billing_phone">Iscriviti come:<span class="required">*</span></label> <select class="input-text" name="role" id="reg_role"> <option <?php if ( ! empty( $_POST['role'] ) && $_POST['role'] == 'ruolo-1') esc_attr_e( 'ruolo-1' ); ?> value="ruolo-1">Ruolo 1</option> <option <?php if ( ! empty( $_POST['role'] ) && $_POST['role'] == 'ruolo-2') esc_attr_e( 'ruolo-2' ); ?> value="ruolo-2">Ruolo 2</option> </select> </p> <?php } add_action( 'woocommerce_register_form_start', 'wooc_extra_register_fields1' ); //salvare ruoli add_action( 'woocommerce_created_customer', 'update_user_role' ); function update_user_role( $user_id ) { $user_id = wp_update_user( array( 'ID' => $user_id, 'role' => $_POST['role'] ) ); }
Ricordatevi di inserire nelle <option> i ruoli utenti che avete sul vostro sito web WordPress sostituendo ruolo-1 e ruolo-2 con i vostri valori.
Ciao e tantissimi complimenti per gli articoli, davvero interessanti e utili.
Ho seguito i passaggi illustrati sopra e nel form di registrazione viene visualizzata la scelta del ruolo utente,
il problema è che il ruolo non viene memorizzato.
nella lista degli utenti wordpress nella colonna ruolo utente c’è scritto “nessuno”.
come potrei risolvere?
grazie mille
Controlla bene se hai sostituito correttamente i valori nel codice di esempio
Ciao, ho seguito questo tuo articolo, ma quando registro l’utente non mi memorizza la scelta impostandolo come cliente, ti riallego il codice come l’ho modificato, i ruoli corrispondono a quelli creati con il plugin Members e sono corretti.
function wooc_extra_register_fields1() {
global $wp_roles; ?>
La tua regione:*
<option value=”abruzzo”>Abruzzo
<option value=”basilicata”>Basilicata
<option value=”calabria”>Calabria
<option value=”campania”>Campania
<option value=”emilia_romagna”>Emilia Romagna
<option value=”friuli-venezia_giulia”>Friuli-Venezia Giulia
<option value=”lazio”>Lazio
<option value=”liguria”>Liguria
<option value=”lombardia”>Lombardia
<option value=”marche”>Marche
<option value=”molise”>Molise
<option value=”piemonte”>Piemonte
<option value=”puglia”>Puglia
<option value=”sardegna”>Sardegna
<option value=”sicilia”>Sicilia
<option value=”toscana”>Toscana
<option value=”umbria”>Umbria
<option value=”veneto”>Trentino-Alto Adige
<option value=”val_daosta”>Val d’Aosta
<option value=”ruolo-2″>Veneto
$user_id, ‘role’ => $_POST[‘role’] ) );
}
non ha incollato tutto il codice…..
ovviamente ho ripetuto il ruolo nelle altre parti del codice
== ‘abruzzo’) esc_attr_e( ‘abruzzo’ ) e così via…
Ciao, ho inserito il codice nel file function.php, la scelta viene visualizzata ma non mi registra nessun ruolo per il nuovo iscritto