Advertisement
  1. Code
  2. WordPress

Creando un Plugin de Formulario de Registro Personalizado Para Wordpress

Scroll to top
Read Time: 11 min

() translation by (you can also view the original English article)

Fuera-de-la-caja, WordPress ofrece un formulario de registro personalizado que puede usarse para configurar un nuevo usuario, o para agregar un nuevo usuario al agregar una instalación de WordPress ya existente. Pero ¿qué pasa si desea implementar un formulario personalizado que no representa las opciones en el tablero de WordPress?

En este tutorial, aprenderemos cómo crear un formulario personalizado en WordPress usando una combinación de etiquetas de plantilla y shortcodes.

El formulario de registro por defecto consisteen dos campos de formulario - nombre de usuario y correo electrónico.

La presencia de sólo los campos de nombre de usuario y correo electrónico en el formulario, facilitan el proceso de registro increíblemente. En primer lugar, tu ingresas tu usuario y tu correo electrónico después de lo cual una contraseña se te enviará. A continuación, haces login en el sitio con la contraseña y luego completas tu perfil y cambias la contraseña a algo recordable.

En lugar de hacer que un usuario pase por el estrés anterior al registrarte en tu sitio, por qué no proporcionas un formulario de inscripción directo al punto que consista de algunos campos extra importantes además de los predeterminados de usuario  y correo electrónico, como una contraseña, una dirección URL de su sitio web, una biografía, un apodo y su apellido.

Esto es particularmente útil en una web de varios autores como Tuts +.

En este artículo,  construiremos un plugin de formulario de registro personalizado con los siguientes campos:

  • Nombre de Usuario
  • Contraseña
  • Correo electrónico
  • URL del sitio web
  • Nombre
  • Apellido
  • Apodo
  • Biografía (o una sección "acerca de")

El formulario de registro personalizado puede integrarse luego en WordPress usando el shortcode del plugin y la etiqueta de la plantilla asociada.

Con el shortcode, puedes crear una página y hacerla la página oficial de registro de tu sitio. También puedes utilizar el código dentro de un post para que un usuario pueda registrarse en tu sitio después de leer uno de tus artículos.

Si deseas agregar el formulario de registro al sidebar o en una ubicación específica en tu sitio web, entonces puedes editar el tema de WordPress pero poner la etiqueta de la plantilla en la ubicación deseada.

Antes de empezar a construir el plugin de formulario de registro, cabe destacar que el campo email, nombre de usuario y contraseña son necesarios.

Estaremos aplicando esta regla al escribir nuestra función de validación.

Opción Premium

Este tutorial te enseñará a construir el plugin desde cero, pero si buscas una solución rápida, lista para usar, prueba el plugin WordPress Registration Form de Envato Market. Con él puedes establecer una amplia gama de campos de registro con control de validación. Una vez terminado el registro, se envía un correo electrónico a los nuevos miembros con sus datos de inicio de sesión. Las plantillas de correo electrónico se pueden modificadar para la inscripción, cambio de contraseña, etcetera.

WordPress Registration Form plugin on Envato MarketWordPress Registration Form plugin on Envato MarketWordPress Registration Form plugin on Envato Market
Plugin WordPress Registration Form en Envato Market

Otra opción es simplemente hacer un pedido en Envato Studio. Puedes elegir a la persona adecuada entre una amplia gama de desarrolladores experimentados de plugins para WordPress. A continuación, puedes enviar tu brief y permitirle al desarrollador crear tu plugin dentro de los plazos acordados.

Por ejemplo, Alisaleem252 desarrollará un plugin para WordPress personalizado que será compatible con la última versión de WordPress y otros plugins en el repositorio de WordPress según tus requisitos.

Conseguirás:

  • Un widget personalizado si es necesario
  • shortcodes personalizados si es necesario
  • tipos de entradas personalizados si es necesario
  • servicio confiable
Custom WordPress Plugin DevelopmentCustom WordPress Plugin DevelopmentCustom WordPress Plugin Development
Desarrollo de Plugin de WordPress Personalizado

El servicio completo cuesta sólo $300, y el plugin estará listo en 10 días. Alisaleem252 tiene una tasa de aprobación del 98% de clientes anteriores. ¡Así que por qué no probar su popular servicio de desarrollo de Plugin Personalizado para WordPress!

Construcción del Plugin

Dicho esto, vamos a empezar con la programación del plugin. En primer lugar, incluye el encabezado del plugin.

1
<?php
2
/*

3
  Plugin Name: Custom Registration

4
  Plugin URI: https://code.tutsplus.com

5
  Description: Updates user rating based on number of posts.

6
  Version: 1.0

7
  Author: Agbonghama Collins

8
  Author URI: http://tech4sky.com

9
 */

A continuación, creamos una función en PHP que contiene el código HTML del formulario de inscripción.

1
function registration_form( $username, $password, $email, $website, $first_name, $last_name, $nickname, $bio ) {
2
    echo '

3
    <style>

4
    div {

5
      margin-bottom:2px;

6
	}

7
	

8
	input{

9
		margin-bottom:4px;

10
	}

11
	</style>

12
	';
13
14
    echo '

15
    <form action="' . $_SERVER['REQUEST_URI'] . '" method="post">

16
	<div>

17
	<label for="username">Username <strong>*</strong></label>

18
	<input type="text" name="username" value="' . ( isset( $_POST['username'] ) ? $username : null ) . '">

19
	</div>

20
	

21
	<div>

22
	<label for="password">Password <strong>*</strong></label>

23
	<input type="password" name="password" value="' . ( isset( $_POST['password'] ) ? $password : null ) . '">

24
	</div>

25
	

26
	<div>

27
	<label for="email">Email <strong>*</strong></label>

28
	<input type="text" name="email" value="' . ( isset( $_POST['email']) ? $email : null ) . '">

29
	</div>

30
	

31
	<div>

32
	<label for="website">Website</label>

33
	<input type="text" name="website" value="' . ( isset( $_POST['website']) ? $website : null ) . '">

34
	</div>

35
	

36
	<div>

37
	<label for="firstname">First Name</label>

38
	<input type="text" name="fname" value="' . ( isset( $_POST['fname']) ? $first_name : null ) . '">

39
	</div>

40
	

41
	<div>

42
	<label for="website">Last Name</label>

43
	<input type="text" name="lname" value="' . ( isset( $_POST['lname']) ? $last_name : null ) . '">

44
	</div>

45
	

46
	<div>

47
	<label for="nickname">Nickname</label>

48
	<input type="text" name="nickname" value="' . ( isset( $_POST['nickname']) ? $nickname : null ) . '">

49
	</div>

50
	

51
	<div>

52
	<label for="bio">About / Bio</label>

53
	<textarea name="bio">' . ( isset( $_POST['bio']) ? $bio : null ) . '</textarea>

54
	</div>

55
	<input type="submit" name="submit" value="Register"/>

56
	</form>

57
	';
58
}

¿Notas que el campo de registro se pasa a la función anterior como variable? En el código de la función, verás instancias del siguiente código, por ejemplo:

(isset ($_POST ['lname'])? $last_name: null)

El operador ternario está comprobando el contenido de la matriz global de $_POST  para ver si el formulario contiene un valor. Si contiene un valor, rellena los campos del formulario con el valor para salvar al usuario de volver a entrar a la entrada del campo.

Un formulario de inscripción nunca está completo hasta que lo validas y saneas la entrada del usuario. Como resultado, creamos una función de validación con el nombre registration_validation.

Para aliviar el dolor de la validación, vamos a usar la clase de WordPress WP_Error. Sígueme en la codificación de la función de validación:

  1. Crea la función y pasa el campo de registro como el argumento de la función.
    1
    function registration_validation( $username, $password, $email, $website, $first_name, $last_name, $nickname, $bio )  {
    
  2. Instancia la clase WP_Error y haz la variable de la instancia global así se puede acceder fuera del ámbito de la función.
    1
    global $reg_errors;
    
    2
    $reg_errors = new WP_Error;
    
  3. Recuerda: Dijimos que el nombre de usuario, contraseña y correo electrónico son necesarios y no deben quedar por fuera. Para aplicar la regla, tenemos que comprobar si alguno de los campos está vacío. Si está vacío, agrega el mensaje de error a la clase WP_Error global.
    1
    if ( empty( $username ) || empty( $password ) || empty( $email ) ) {
    
    2
        $reg_errors->add('field', 'Required form field is missing');
    
    3
    }
    
  4. También verificamos que el número de caracteres de nombre de usuario no sea inferior a 4.
    1
    if ( 4 > strlen( $username ) ) {
    
    2
        $reg_errors->add( 'username_length', 'Username too short. At least 4 characters is required' );
    
    3
    }
    
  5. Comprueba si el nombre de usuario ya está registrado.
    1
    if ( username_exists( $username ) )
    
    2
        $reg_errors->add('user_name', 'Sorry, that username already exists!');
    
  6. Emplea los servicios de la función de WordPress validate_username para asegurarte de que el nombre de usuario es válido.
    1
    if ( ! validate_username( $username ) ) {
    
    2
        $reg_errors->add( 'username_invalid', 'Sorry, the username you entered is not valid' );
    
    3
    }
    
  7. Asegúrate de que la contraseña introducida por los usuarios no es menos de 5 caracteres.
    1
    if ( 5 > strlen( $password ) ) {
    
    2
            $reg_errors->add( 'password', 'Password length must be greater than 5' );
    
    3
        }
    
  8. Comprueba si el email es un email válido.
    1
    if ( !is_email( $email ) ) {
    
    2
        $reg_errors->add( 'email_invalid', 'Email is not valid' );
    
    3
    }
    
  9. Comprueba si el email ya está registrado.
    1
    if ( email_exists( $email ) ) {
    
    2
        $reg_errors->add( 'email', 'Email Already in use' );
    
    3
    }
    
  10. Si el campo de sitio web está lleno, comprueba si es válido.
    1
    if ( ! empty( $website ) ) {
    
    2
        if ( ! filter_var( $website, FILTER_VALIDATE_URL ) ) {
    
    3
            $reg_errors->add( 'website', 'Website is not a valid URL' );
    
    4
        }
    
    5
    }
    
  11. Finalmente, hacemos un bucle por los errores en nuestra instancia WP_Error y mostramos el error individual.
    1
    if ( is_wp_error( $reg_errors ) ) {
    
    2
    3
        foreach ( $reg_errors->get_error_messages() as $error ) {
    
    4
        
    
    5
            echo '<div>';
    
    6
            echo '<strong>ERROR</strong>:';
    
    7
            echo $error . '<br/>';
    
    8
            echo '</div>';
    
    9
            
    
    10
        }
    
    11
    12
    }
    
    Hemos hecho el código de validación de la función.

La siguiente es la función del plugin complete_registration() que controla el registro de usuario.
El registro de usuarios se hace realmente por la función wp_insert_user que acepta una matriz de datos del usuario.

1
function complete_registration() {
2
    global $reg_errors, $username, $password, $email, $website, $first_name, $last_name, $nickname, $bio;
3
    if ( 1 > count( $reg_errors->get_error_messages() ) ) {
4
        $userdata = array(
5
        'user_login'    => 	$username,
6
        'user_email' 	=> 	$email,
7
        'user_pass' 	=> 	$password,
8
        'user_url' 		=> 	$website,
9
        'first_name' 	=> 	$first_name,
10
        'last_name' 	=> 	$last_name,
11
        'nickname' 		=> 	$nickname,
12
        'description' 	=> 	$bio,
13
		);
14
        $user = wp_insert_user( $userdata );
15
        echo 'Registration complete. Goto <a href="' . get_site_url() . '/wp-login.php">login page</a>.';   
16
	}
17
}

En la función complete_registration() anterior, hicimos la instancia de WP_Error $reg_errors y la variable de campos de forma global por lo que podemos acceder a la variable en el ámbito global.

Luego comprobamos si la instancia de control de errores de $reg_errors contiene algún error. Si no se encuentra ningún error, se procede a rellenar la matriz $userdata e Introduce los detalles del registro de usuario a la base de datos de WordPress y muestrar un mensaje de registro completo con un enlace a la página de inicio de sesión.

A continuación, es la super función custom_registration_function() que pone todas las funciones que hemos creado anteriormente en uso.

1
function custom_registration_function() {
2
    if ( isset($_POST['submit'] ) ) {
3
        registration_validation(
4
        $_POST['username'],
5
        $_POST['password'],
6
        $_POST['email'],
7
        $_POST['website'],
8
        $_POST['fname'],
9
        $_POST['lname'],
10
        $_POST['nickname'],
11
        $_POST['bio']
12
    	);
13
		
14
		// sanitize user form input

15
        global $username, $password, $email, $website, $first_name, $last_name, $nickname, $bio;
16
        $username	= 	sanitize_user( $_POST['username'] );
17
        $password 	= 	esc_attr( $_POST['password'] );
18
        $email 		= 	sanitize_email( $_POST['email'] );
19
        $website 	= 	esc_url( $_POST['website'] );
20
        $first_name = 	sanitize_text_field( $_POST['fname'] );
21
        $last_name 	= 	sanitize_text_field( $_POST['lname'] );
22
        $nickname 	= 	sanitize_text_field( $_POST['nickname'] );
23
        $bio 		= 	esc_textarea( $_POST['bio'] );
24
25
		// call @function complete_registration to create the user

26
		// only when no WP_error is found

27
        complete_registration(
28
        $username,
29
        $password,
30
        $email,
31
        $website,
32
        $first_name,
33
        $last_name,
34
        $nickname,
35
        $bio
36
		);
37
    }
38
39
    registration_form(
40
    	$username,
41
        $password,
42
        $email,
43
        $website,
44
        $first_name,
45
        $last_name,
46
        $nickname,
47
        $bio
48
		);
49
}

Me explico lo que es el código de la función custom_registration_function().

En primer lugar, determinamos si el formulario ha sido enviado para comprobar si $_POST ['submit'] fue establecido. Si el formulario ha sido enviado, llamamos a la función registration_validation para validar el usuario enviado en el formulario.

Luego limpie los datos del formulario y configure los datos de limpieza en una variable con el nombre del campo del formulario. Por último, llamamos a complete_registration para registrar el usuario.

Tenemos que llamar a la función registration_form para mostrar el formulario de inscripción.

¿Recuerdas que mencioné que vamos a darle soporte para shortcodes al plugin de registro? Abajo está el código de soporte para shortcodes.

1
// Register a new shortcode: [cr_custom_registration]

2
add_shortcode( 'cr_custom_registration', 'custom_registration_shortcode' );
3
4
// The callback function that will replace [book]

5
function custom_registration_shortcode() {
6
    ob_start();
7
    custom_registration_function();
8
    return ob_get_clean();
9
}

En este punto, hemos terminado de programar el plugin. Debajo está una imagen que muestra cómo se ve el formulario de inscripción.

Ten en cuenta que podrías no conseguir el mismo aspecto exacto en su sitio de WordPress, esto como resultado de las variaciones de estilo en el CSS.

Uso del Plugin

Para implementar el plugin en un post de WordPress o una página, utiliza el shortcode [cr_custom_registration].

Para implementar el formulario de inscripción en un aspecto específico de tu tema, agrega la siguiente etiqueta de plantilla - <? php custom_registration_function();? &gt;.
Puedes obtener el archivo del plugin desde el archivo adjunto en este artículo.

Resumen

En este artículo, caminamos a través del proceso de creación de un plugin que agrega un formulario personalizado en WordPress. Puede ampliar la forma de registro para incluir campos adicionales tales como rol del usuario, cuenta de AOL IM, pero asegúrate de que el campo de formulario es un meta dato válido para wp_insert_user.

Si tienes cualquier pregunta y sugerencia, ¡déjame saberlo en los comentarios!

Recuerda que si luchaste para seguir este tutorial y quieres una solución más simple, puedes probar el plugin WordPress Registration Form en Envato.Market.

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.