Come aggiungere campi al profilo utente? Ad esempio, paese, età ecc

16 gen 2016, 10:40:46
Visualizzazioni: 138K
Voti: 46

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.

1
Commenti

+1 per l'introduzione - potrei finire per prenderla in prestito! :-D

Boycott A.I. Boycott A.I.
12 nov 2024 21:02:50
Tutte le risposte alla domanda 4
7
106

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:

16 gen 2016 13:13:41
Commenti

Ottimo, funziona perfettamente.

AVEbrahimi AVEbrahimi
15 mar 2018 15:31:25

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

b_dubb b_dubb
3 lug 2019 19:12:40

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

Arpita Hunka Arpita Hunka
2 ago 2019 17:38:28

Ho risolto il mio problema ma grazie per avermi contattato.

b_dubb b_dubb
5 ago 2019 20:31:38

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

squarecandy squarecandy
30 gen 2020 20:26:41

Ho aggiunto la verifica del nonce.

KittMedia KittMedia
21 gen 2021 12:41:37

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

Rup Rup
21 gen 2021 13:00:57
Mostra i restanti 2 commenti
4
10

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

20 set 2017 06:33:52
Commenti

Solo la versione pro

I am the Most Stupid Person I am the Most Stupid Person
4 mar 2019 14:16:43

Ci sono modi gratuiti per farlo con PHP.

Drmzindec Drmzindec
15 ott 2019 12:05:54

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.

squarecandy squarecandy
15 ott 2019 19:02:01

WordPress dovrebbe farlo senza chiederti di hardcodare form HTML in PHP. Sono d'accordo con ACF, dovrebbe far parte del core. Puoi anche definire i campi con il codice e versionarli.

marek.m marek.m
30 gen 2020 16:13:56
1

È preferibile utilizzare get_user_meta (invece di get_the_author_meta):

function extra_user_profile_fields( $user ) {
    $meta = get_user_meta($user->ID, 'meta_key_name', false);
}
4 dic 2018 13:14:25
Commenti

entrambi funzionano senza problemi!

Fernando Baltazar Fernando Baltazar
18 ago 2020 22:04:25
2

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' );
6 feb 2023 21:48:56
Commenti

di gran lunga la risposta più semplice

RafaSashi RafaSashi
1 mag 2023 12:19:29

@RafaSashi Potrebbe esserlo, ma tieni presente che a volte sono necessari campi più avanzati e questo metodo funziona solo per l'utilizzo dei classici campi di testo su una sola riga. ;)

Talk Nerdy To Me Talk Nerdy To Me
3 mag 2023 18:36:36