Crea i tuoi campi di contatto utente WordPress
Oggi ho creato per te un nuovo plugin. Un plugin che si occupa dei metodi di contatto degli utenti. Fondamentalmente quando modifichi un utente nell'amministrazione, c'è un blocco "informazioni di contatto". Bene, mi piacerebbe mostrarti come aggiungere i tuoi campi lÏ e, per andare un po' oltre, come mostrare (o meno) questi nuovi campi nella pagina di registrazione.
Ecco un'anteprima di ciò che creeremo:
Nuovi campi utente nella pagina di modifica
Campi personalizzati nella pagina di registrazione
E per farlo, come al solito, creeremo un plugin carino e semplice!
Passaggio 1: crea il plugin
Crea una nuova cartella in wp-content/plugins e chiamala âcustom-user-contact-methodsâ. All'interno di questa cartella appena creata, crea un file chiamato "rc-custom-user-contact-methods.php" e aprilo nel tuo software editor preferito.
Inserisci questo contenuto nel tuo file vuoto. Questo codice registra semplicemente il plugin:
<?php
/*
Plugin Name: Custom User Contact Methods
Plugin URL: http://remicorson.com/
Description: Add custom fields to users "contact" section
Version: 1.0
Author: Remi Corson
Author URI: http://remicorson.com
Contributors: corsonr
*/
Passaggio 2: definisci i campi personalizzati
Successivamente, dobbiamo creare una variabile che conterrĂ i nostri campi personalizzati, quelli da utilizzare nella pagina di edizione dell'utente e anche nella pagina predefinita di registrazione. Memorizziamo questi campi in una variabile chiamata $extra_fields.
$extra_fields = array(
array( 'facebook', __( 'Facebook Username', 'rc_cucm' ), true ),
array( 'twitter', __( 'Twitter Username', 'rc_cucm' ), true ),
array( 'googleplus', __( 'Google+ ID', 'rc_cucm' ), true ),
array( 'linkedin', __( 'Linked In ID', 'rc_cucm' ), false ),
array( 'pinterest', __( 'Pinterest Username', 'rc_cucm' ), false ),
array( 'wordpress', __( 'WordPress.org Username', 'rc_cucm' ), false ),
array( 'phone', __( 'Phone Number', 'rc_cucm' ), true )
);
Stiamo memorizzando ogni campo all'interno di un array che ha 3 parametri, il primo è l'ID del campo, il secondo è l'etichetta del campo e l'ultima è un'informazione booleana che definisce se il campo viene mostrato o meno nella pagina di registrazione . Puoi aggiungere tutti i parametri che desideri, ad esempio un segnaposto o un'informazione richiesta.
Passaggio 3: aggancia il filtro giusto
Ora dobbiamo agganciare una funzione al filtro giusto. Nel nostro caso specifico, il filtro è âuser_contactmethodsâ e il nome della funzione che andremo a creare è ârc_add_user_contactmethodsâ.
// Use the user_contactmethods to add new fields
add_filter( 'user_contactmethods', 'rc_add_user_contactmethods' );
Passaggio 4: crea i nostri campi personalizzati
Ora dobbiamo creare la funzione ârc_add_user_contactmethodsâ. Ă quello che aggiungerĂ i nostri campi personalizzati alla pagina di modifica dell'utente. La buona notizia è che abbiamo memorizzato i nostri campi all'interno di un array, ciò significa che la funzione seguente sarĂ completamente dinamica e sarĂ abbastanza semplice aggiungere nuovi campi semplicemente modificando la variabile $extra_fields.
/**
* Add custom users custom contact methods
*
* @access public
* @since 1.0
* @return void
*/
function rc_add_user_contactmethods( $user_contactmethods ) {
// Get fields
global $extra_fields;
// Display each fields
foreach( $extra_fields as $field ) {
if ( !isset( $contactmethods[ $field[0] ] ) )
$user_contactmethods[ $field[0] ] = $field[1];
}
// Returns the contact methods
return $user_contactmethods;
}
A questo punto, se salvi e attivi il plugin, dovresti vedere i tuoi campi personalizzati nella pagina di modifica dell'utente. PoichĂŠ stiamo utilizzando l'hook corretto, non dobbiamo creare i dati dei campi di "salvataggio". Quindi, il plugin funziona benissimo per il momento. Ma vorrei andare un poâ oltre e aggiungere lâopzione per visualizzare questi campi nella pagina di registrazione. Assicurati di selezionare nelle impostazioni la casella di controllo "Chiunque può registrarsi", altrimenti non sarai in grado di vedere il collegamento "Registrati".
Passaggio 5: Hook della pagina di registrazione
Per aggiungere i nostri campi alla pagina di registrazione, dobbiamo accedere ad almeno due hook e creare due funzioni. Uno per visualizzare i campi e il secondo per salvare i dati dei campi nel database.
Agganciamo le nostre funzioni:
// Add our fields to the registration process
add_action( 'register_form', 'rc_register_form_display_extra_fields' );
add_action( 'user_register', 'rc_user_register_save_extra_fields', 100 );
Passaggio 6: Visualizza la pagina di registrazione dei campi personalizzati
Nel codice sopra abbiamo dichiarato due funzioni. Il primo è visualizzare i campi nella pagina di registrazione. In questa parte dobbiamo occuparci del terzo parametro di ogni array in $extra_fields. Questo parametro booleano indica se i campi devono essere mostrati o meno. Vero: il campo viene mostrato, falso: il campo non viene mostrato.
/**
* Show custom fields on registration page
*
* Show custom fields on registration if field third parameter is set to true
*
* @access public
* @since 1.0
* @return void
*/
function rc_register_form_display_extra_fields() {
// Get fields
global $extra_fields;
// Display each field if 3th parameter set to "true"
foreach( $extra_fields as $field ) {
if ( $field[2] == true ) {
$field_value = isset( $_POST[ $field[0] ] ) ? $_POST[ $field[0] ] : '';
echo '<p>
<label for="'. esc_attr( $field[0] ) .'">'. esc_html( $field[1] ) .'<br />
<input type="text" name="'. esc_attr( $field[0] ) .'" id="'. esc_attr( $field[0] ) .'" class="input" value="'. esc_attr( $field_value ) .'" size="20" /></label>
</label>
</p>';
} // endif
} // end foreach
}
Passaggio 7: memorizzare i valori dei campi durante il processo di registrazione
Ora che i nostri campi sono mostrati nella pagina di registrazione, dobbiamo memorizzare i loro valori nel database. Questo è lo scopo della funzione ârc_user_register_save_extra_fieldsâ. Per fare ciò, dobbiamo utilizzare la funzione âwp_update_user()â.
/**
* Save field values
*
* @access public
* @since 1.0
* @return void
*/
function rc_user_register_save_extra_fields( $user_id, $password = '', $meta = array() ) {
// Get fields
global $extra_fields;
$userdata = array();
$userdata['ID'] = $user_id;
// Save each field
foreach( $extra_fields as $field ) {
if( $field[2] == true ) {
$userdata[ $field[0] ] = $_POST[ $field[0] ];
} // endif
} // end foreach
$new_user_id = wp_update_user( $userdata );
}
Conclusione
Bene, abbiamo visto le basi su come aggiungere nuovi campi ai metodi di contatto dellâutente, ma questo è tutto. Puoi ad esempio rimuovere campi esistenti come âYahoo IMâ, âAIMâ e âJabberâ eseguendo un semplice unset(). Ma puoi anche aggiungere alcune funzioni per disinfettare i tuoi campi personalizzati per verificare ad esempio se il numero di telefono ha un formato appropriato, se un campo è obbligatorio o meno ecc ecc⌠Non esitare a chiedere funzionalitĂ specifiche nei commenti!
Oh, e un'ultima cosa... se vuoi visualizzare i dati di uno qualsiasi dei tuoi campi, usa semplicemente questo:
// Param 1 is user ID
// Param 2 is field ID
// Param 3 is there to get a var or an array
echo get_user_meta( 1, 'twitter', true );