Ricerca nel sito web

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 );