Come aggiungere campi al profilo utente? Ad esempio, paese, età ecc
Non sono molto esperto di computer/codici ecc. Uso un plugin che crea un modulo di registrazione e in quel modulo ho aggiunto paese, fascia d'età, genere e così via. Ho selezionato l'opzione che aggiungerà l'utente registrato nel sistema utenti di WordPress. Ma quando provo, nella sezione Utenti del backend vengono mostrati solo il nome utente e l'email.. C'è un modo per far apparire gli altri campi nella sezione utenti?
Ho bisogno che vengano mostrati per scopi statistici.

Devi utilizzare gli hook show_user_profile
, edit_user_profile
, personal_options_update
e edit_user_profile_update
.
Puoi utilizzare il seguente codice per aggiungere campi aggiuntivi nella sezione Utente
Codice per aggiungere campi extra nella sezione Modifica Utente:
add_action( 'show_user_profile', 'extra_user_profile_fields' );
add_action( 'edit_user_profile', 'extra_user_profile_fields' );
function extra_user_profile_fields( $user ) { ?>
<h3><?php _e("Informazioni aggiuntive del profilo", "blank"); ?></h3>
<table class="form-table">
<tr>
<th><label for="address"><?php _e("Indirizzo"); ?></label></th>
<td>
<input type="text" name="address" id="address" value="<?php echo esc_attr( get_the_author_meta( 'address', $user->ID ) ); ?>" class="regular-text" /><br />
<span class="description"><?php _e("Inserisci il tuo indirizzo."); ?></span>
</td>
</tr>
<tr>
<th><label for="city"><?php _e("Città"); ?></label></th>
<td>
<input type="text" name="city" id="city" value="<?php echo esc_attr( get_the_author_meta( 'city', $user->ID ) ); ?>" class="regular-text" /><br />
<span class="description"><?php _e("Inserisci la tua città."); ?></span>
</td>
</tr>
<tr>
<th><label for="postalcode"><?php _e("Codice Postale"); ?></label></th>
<td>
<input type="text" name="postalcode" id="postalcode" value="<?php echo esc_attr( get_the_author_meta( 'postalcode', $user->ID ) ); ?>" class="regular-text" /><br />
<span class="description"><?php _e("Inserisci il tuo codice postale."); ?></span>
</td>
</tr>
</table>
<?php }
Codice per salvare i dettagli dei campi extra nel database:
add_action( 'personal_options_update', 'save_extra_user_profile_fields' );
add_action( 'edit_user_profile_update', 'save_extra_user_profile_fields' );
function save_extra_user_profile_fields( $user_id ) {
if ( empty( $_POST['_wpnonce'] ) || ! wp_verify_nonce( $_POST['_wpnonce'], 'update-user_' . $user_id ) ) {
return;
}
if ( !current_user_can( 'edit_user', $user_id ) ) {
return false;
}
update_user_meta( $user_id, 'address', $_POST['address'] );
update_user_meta( $user_id, 'city', $_POST['city'] );
update_user_meta( $user_id, 'postalcode', $_POST['postalcode'] );
}
Sono disponibili anche diversi articoli sul tema che potrebbero essere utili:

Questo non sta memorizzando i dati dai miei campi aggiuntivi nel database. Qualche suggerimento? Grazie.

@b_dubb, Potresti per favore condividere il tuo codice? Così controllerò e ti farò sapere.

Dovresti aggiungere la verifica del nonce per evitare di introdurre vulnerabilità di sicurezza. https://developer.wordpress.org/themes/theme-security/using-nonces/

@KittMedia Il nonce è già verificato da check_admin_referer che viene chiamato da user-edit.php prima di questi hook.

Il plugin Advanced Custom Fields Pro ti permetterà di aggiungere campi ai profili utente senza alcuna codifica.

Sì - è sicuramente possibile programmarlo in PHP senza ACF se preferisci. La mia esperienza è che richiede 100+ righe di codice e devi preoccuparti della verifica del nonce, della scrittura dell'HTML del form, ecc. Potrebbero volerci alcune ore di programmazione contro 5-10 minuti di configurazione in ACF. Probabilmente dipende dal fatto che tu stia già usando ACF Pro in un progetto.

Puoi anche aggiungere facilmente campi aggiuntivi alla sezione "Informazioni di contatto" esistente nella schermata di modifica del profilo utente, senza dover configurare altri hook per aggiornare i campi meta.
function custom_user_profile_contact_fields( $methods ) {
$methods['phone'] = 'Numero di telefono';
$methods['location'] = 'Località';
return $methods;
}
add_action( 'user_contactmethods', 'custom_user_profile_contact_fields' );
