Come faccio ad aggiungere un campo nel profilo Utenti? Ad esempio, paese, età ecc


21

Non sono molto bravo con computer / codici, ecc. Uso un plug-in che rende un modulo di registrazione simile e in quel modulo ho aggiunto paese, fascia di età, sesso e così via. Faccio clic sull'opzione che aggiungerà il registratore nell'oggetto utente wordpress. Ma quando lo provo, solo il nome utente e l'e-mail vengono visualizzati nella sezione Utenti sul back-end. Esiste un modo per mostrare gli altri campi nella sezione Utenti?

Ho bisogno che mostrino per usi statistici.


5
Per favore prova la nostra ricerca. Troverai dozzine di esempi.
fuxia

Risposte:


58

È necessario utilizzare i show_user_profile, edit_user_profile, personal_options_update, e edit_user_profile_updateganci.

È possibile utilizzare il seguente codice per aggiungere campi aggiuntivi nella sezione Utente

Codice per l'aggiunta di campi aggiuntivi 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("Extra profile information", "blank"); ?></h3>

    <table class="form-table">
    <tr>
        <th><label for="address"><?php _e("Address"); ?></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("Please enter your address."); ?></span>
        </td>
    </tr>
    <tr>
        <th><label for="city"><?php _e("City"); ?></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("Please enter your city."); ?></span>
        </td>
    </tr>
    <tr>
    <th><label for="postalcode"><?php _e("Postal Code"); ?></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("Please enter your postal code."); ?></span>
        </td>
    </tr>
    </table>
<?php }

Codice per il salvataggio dei dettagli dei campi aggiuntivi 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 ( !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'] );
}

Ci sono anche diversi post di blog disponibili sull'argomento che potrebbero essere utili:


Bravo, funziona alla grande.
AVEbrahimi

1
Questo non sta memorizzando i dati dai miei campi extra nel DB. Suggerimenti per favore? Grazie.
b_dubb,

@b_dubb, puoi per favore condividere il tuo codice? Quindi controllerò e ti farò sapere.
Arpita Hunka,

Ho risolto il mio problema, ma grazie per averci contattato.
b_dubb,

3

Faresti meglio a usare 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);
}

3

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


3
Solo la versione pro
Sono la persona più stupida del

Ci sono modi gratuiti per farlo con PHP.
Johan Pretorius,

Sì, sicuramente è possibile codificarlo in PHP senza ACF, se si preferisce. La mia esperienza è che ci vogliono oltre 100 righe di codice e devi preoccuparti della verifica del nonce, della scrittura del codice HTML del modulo, ecc. Potrebbero essere necessarie alcune ore di codifica rispetto a 5-10 minuti di installazione in ACF. Probabilmente dipende se stai usando ACF Pro già su un progetto.
squarecandy,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.