Cree sus propios campos de contacto de usuario de WordPress

Cree sus propios campos de contacto de usuario de WordPress

Hoy creé un nuevo complemento para ti. Un complemento que se ocupa de los métodos de contacto de los usuarios. Básicamente, cuando cambia un usuario en la administración, hay un bloque de “información de contacto”. Bueno, me gustaría mostrarle cómo agregar sus propios campos y, para ir un poco más allá, cómo mostrar (o no) estos nuevos campos en la página de registro.

Aquí hay un vistazo a lo que crearemos:

modificar campos personalizados

Nuevos campos de usuario en la página de edición

Campos Personalizados

Campos personalizados en la página de registro

¡Y para hacer esto, como de costumbre, crearemos un complemento genial y simple!

Paso 1: crea el complemento

Cree una nueva carpeta en wp-content / plugins y asígnele el nombre “custom-user-contact-methods”. En esta carpeta recién creada, cree un archivo llamado “rc-custom-user-contact-methods.php” y ábralo en su software de edición favorito.

Coloque este contenido en su archivo vacío. Este código simplemente registra el complemento:

<?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
*/

Paso 2: defina sus campos personalizados

A continuación, necesitamos crear una variable que contendrá nuestros campos personalizados, los que se usarán en la página de edición del usuario, así como la página de registro predeterminada. Guardemos estos campos en una variable llamada $ 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 )
);

Almacenamos cada campo en una matriz que tiene 3 parámetros, el primero es el ID del campo, el segundo es la etiqueta del campo y el último es información booleana que define si el campo se muestra en la página de registro o no. Puede agregar tantos parámetros como desee, por ejemplo, un marcador de posición o la información requerida.

Paso 3: conecte el filtro correcto

Ahora necesitamos conectar una función al filtro correcto. En nuestro caso particular, el filtro es “user_contactmethods”, y el nombre de la función que vamos a crear es “rc_add_user_contactmethods”.

// Use the user_contactmethods to add new fields
add_filter( 'user_contactmethods', 'rc_add_user_contactmethods' );

Paso 4: crea nuestros campos personalizados

Ahora necesitamos crear la función “rc_add_user_contactmethods”. Este es el que agregará nuestros campos personalizados a la página de edición del usuario. La buena noticia es que hemos almacenado nuestros campos en una matriz, esto significa que la siguiente función será completamente dinámica y será bastante fácil agregar nuevos campos simplemente modificando la variable $ 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;
}

En este paso, si se registra y activa el complemento, debería ver sus campos personalizados en la página de edición del usuario. Dado que estamos usando el gancho correcto, no necesitamos crear una “copia de seguridad” de los datos del campo. Entonces, el complemento está funcionando bien en este momento. Pero me gustaría ir un paso más allá y agregar la capacidad de mostrar estos campos en la página de registro. Asegúrese de marcar la casilla de verificación “Cualquiera puede registrarse” en la configuración; de lo contrario, no podrá ver el enlace “Registrarse”.

Paso 5: Ganchos en la página de registro

Para agregar nuestros campos en la página de registro, necesitamos acceder al menos a dos ganchos y crear dos funciones. Uno para mostrar los campos y el segundo para guardar los datos de los campos en la base de datos.

Cuelguemos nuestras funciones:

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

Paso 6: mostrar la página de registro de campos personalizados

En el código anterior, hemos declarado dos funciones. El primero es mostrar los campos en la página de registro. En esta parte, debemos ocuparnos del tercer parámetro de cada matriz en $ extra_fields. Este parámetro booleano indica si los campos deben mostrarse o no. Verdadero: se muestra el control, falso: no se muestra el control.

/**
 * 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
}

Paso 7: almacenar valores de campo durante el proceso de registro

Ahora que nuestros campos se muestran en la página de registro, necesitamos almacenar sus valores en la base de datos. Este es el principio de la función “rc_user_register_save_extra_fields”. Para hacer esto tenemos que usar el “wp_update_user ()“función.

/**
 * 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 );
}

Conclusión

Bueno, hemos visto los conceptos básicos de agregar nuevos campos a los métodos de contacto de los usuarios, pero eso es todo. Por ejemplo, puede eliminar campos existentes como “Yahoo IM”, “AIM” y “Jabber” haciendo un simple desarmado (). Pero también puedes añadir algunas funciones para limpiar tus campos personalizados con el fin de comprobar por ejemplo si el número de teléfono tiene un formato adecuado, si un campo es obligatorio o no etc etc… ¡No dudes en preguntar por funcionalidades específicas en los comentarios!

Ah, y una cosa más … si desea mostrar datos para cualquiera de sus campos, simplemente use esto:

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

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Ir arriba