Cómo desarrollar un sitio de membresía con WordPress Parte 2

Lo que vas a crear

En la primera parte de esta serie, cubrimos la personalización de los formularios de registro e inicio de sesión. Hoy veremos cómo agregar campos personalizados al formulario de registro. Agregaremos una entrada de texto para un identificador de Twitter y una casilla de verificación donde los usuarios deberán aceptar los términos antes de registrarse. El trabajo requerido se puede dividir en tres partes:

  • Añadiendo los propios campos
  • Validación en los campos.
  • Procesando los datos

Lo haremos también muy corto Discuta las mejores maneras de estilizar sus correos electrónicos salientes. Esto significa que los usuarios recibirán buenos correos electrónicos de marca cuando se registren..  

Rápidamente antes de comenzar, asegúrese de Cualquiera puede registrarse está marcado en su configuración de WordPress (Ajustes> General).  

Hay mucho que hacer; Empecemos

Una de las mejores cosas de WordPress es la forma en que le proporciona acciones y filtros. Estos nos permiten conectar eventos o filtrar contenido, lo que nos da la oportunidad de extender WordPress con gracia.   

Entonces, usando la acción register_form, vamos a enganchar en el formulario de registro y agregar nuestros campos. Copie la siguiente función en nuestro admin.php que creamos en la primera parte de esta serie.

 

Básicamente estamos inyectando algunos campos nuevos en nuestro formulario de registro. El marcado utilizado es imitar el de los campos nativos. También queremos conservar los valores si la página se vuelve a cargar, por lo que comprobaremos si existen en el $ _POST super global Quizás se pregunte por qué nuestra etiqueta de Twitter está envuelta en una función: .

los _mi La función permite que se realice la traducción; puede leer más sobre ella en el Códice de WordPress.

Esto es genial, pero ¿qué tal alguna validación? Tal como está, los usuarios pueden poner lo que quieran allí o simplemente dejarlo en blanco. Hagamos que nuestros campos sean obligatorios y que el campo de texto solo incluya caracteres regulares para evitar ataques maliciosos. Esta vez usaremos un filtro de WordPress: registration_errors. 

agregar ('twitter_name_error', __ ('ERROR: Por favor ingrese su nombre de Twitter. ',' Sabio '));  if (preg_match ('/ [^ a-z _ \ - 0-9] / i', $ _POST ['twitter_name'])) $ errors-> add ('twitter_name_error', __ ('ERROR: Utilice letras, números, espacios y guiones bajos solamente. ',' Sage '));  si (vacío ($ _POST ['términos'])) $ errores-> agregar ('términos_ error', __ ('ERROR: Debe aceptar los términos. ',' Sabio '));  devuelve $ errores;  add_filter ('registration_errors', 'tutsplus_validate_registration', 10, 3);

Al filtro anterior se le pasan tres parámetros: 

  1. Los errores que se han procesado.
  2. Email del usuario
  3. El nombre de usuario saneado del usuario

La función se activa después de enviar el formulario pero antes de que los datos lleguen a la base de datos. En nuestro caso, estamos comprobando si los campos están vacíos y si hay caracteres extraños en nuestra entrada de nombre de Twitter. Si alguno de estos son verdaderos pasamos un mensaje de error a la $ error objeto que se devuelve.   

Nota: si obtiene un cuadro de error vacío, no se preocupe. El complemento de seguridad que instalamos en la primera parte tiene una configuración predeterminada que oculta los mensajes. Bajo la Ajustes de WordPress sección, desmarque la opción Deshabilitar los mensajes de error de inicio de sesión.  

Ahora, la última pieza de nuestro rompecabezas: procesar los datos para que se guarden en nuestra base de datos contra ese usuario. Nuevamente, usaremos una acción definida por WordPress (user_register) para enganchar en este proceso. Se necesita un parámetro, el user_id-de esa manera se sabe contra quién guardar los datos. Asumiendo el $ _POST Superglobal contiene nuestros datos, podemos guardarlos usando actualizar_usuario_meta.

Campos personalizados en el administrador

En este momento, hemos recopilado los datos de los usuarios, incluidos nuestros campos personalizados, pero no podemos editar esos valores en el administrador de WordPress. Vamos a enganchar eso. En nuestro admin.php agrega la siguiente función:

 

Usando algunas acciones de WordPress podemos agregar fácilmente campos personalizados. 


Ahora para procesar la meta personalizada del usuario. 

Redireccionar al iniciar sesión

Finalmente, queremos redirigir a nuestros usuarios a una página específica cuando inician sesión. El valor predeterminado los envía al back-end de WordPress. Olvídalo. Vamos a enviarlos a una página de "mi cuenta". En primer lugar, deberá crear esta página en el back-end. No te preocupes por el contenido por ahora, porque lo veremos en la próxima parte de la serie. 

Ahora que tenemos nuestra página, pegue el código siguiente en ____. Php y pruébelo. Asumiendo que tu página de "mi cuenta" tiene la babosa mi cuenta deberia de funcionar. Una vez más, hemos utilizado un filtro de WordPress para lograr esta brujería. 

En pocas palabras, el código comprueba si hay un usuario, y si es un usuario administrador, se le dirige al lugar predeterminado, de lo contrario, se redirige a mi cuenta página. Todo esto se activa cuando el usuario inicia sesión usando el filtro login_redirect. 

roles) && is_array ($ user-> roles)) // compruebe los administradores si (in_array ('administrador', $ usuario-> roles)) // redirigirlos al lugar predeterminado return $ redirect_to;  else return home_url ('perfil');  else else return $ redirect_to;  add_filter ('login_redirect', 'tutsplus_redirect_on_login', 10, 3);

Una nota rápida sobre los correos electrónicos salientes

Cuando los usuarios se registren en su sitio, recibirán correos electrónicos de confirmación. Además, si un usuario olvida su contraseña, tiene la capacidad de recuperarla por correo electrónico. Entonces, es importante que les demos un poco de amor y atención a estos correos electrónicos si queremos que nuestro sitio de membresía sea todo eso.. 

Ahora hay algunas maneras de hacer esto. Para todos los puristas del mercado, puede usar los filtros de WordPress para cambiar el tipo de contenido del correo electrónico y el estilo de sus correos electrónicos; Alternativamente, hay una gran cantidad de complementos diseñados para este propósito.. 

Personalmente, me gusta usar Mandrill de MailChimp para enviar correos electrónicos desde mis sitios de WordPress. No es demasiado difícil de configurar y está lleno de funciones, una de las cuales es poder aplicar plantillas / estilos a sus correos electrónicos salientes. 

Que sigue?

En la siguiente y última parte de la serie haremos una sección de cuenta básica en la que los usuarios registrados podrán editar sus detalles. También queremos que los administradores puedan editar estos detalles desde el área de administración de WP, por lo que agregaremos algunos campos personalizados allí también..

Si tiene alguna sugerencia o pregunta por favor deje un comentario. Haré mi mejor esfuerzo para responder de manera oportuna. 

Cosas a tener en cuenta

Tenga en cuenta: si está descargando el código del repositorio de GitHub, incluye todos los archivos para obtener su tema en marcha. ¡La idea es que puedas agarrar el repositorio y simplemente ejecutar los comandos necesarios de Gulp y Bower y estarás lejos! Si solo desea los archivos que contienen código específico para esta serie, los archivos se enumeran a continuación.. 

  • Todos los archivos en el directorio de administración.  
  • lib / admin.php 
  • lib / membership.php
  • plantilla-usuario-perfil.php
  • templates / header.php