- Racó tècnic - http://www.racotecnic.com -

Registro de usuarios externo a WordPress

Nota: Esta entrada se refiere a la versión de WordPress 2.6.x. Es posible que estos métodos esten obsoletos -y por ello no funcione- en versiones más recientes de WP.

Estos días me estoy dedicando (entre otras cosas…) a unificar el registro de usuarios de la página www.underave.net [1] debido a que utilizamos distintas plataformas PHP (phpBB [2], WordPress [3] y MediaWiki [4]).

En este post explicaré cómo registrar usuarios desde un formulario externo a WordPress.

Pero explicaré lo justo y necesario (es decir, únicamente el código requerido para registrar los usuarios tras mandar los datos vía POST desde un formulario), como siempre, todo lo demás lo podéis encontrar fácilmente utilizando google [5].


Empecemos…

Como he dicho doy por hecho que sabéis hacer un formulario de envío de datos POST. Por si acaso aquí tenéis una útil ayuda:

Enviando y recibiendo datos con GET y POST utilizando HTML y PHP [6]

Primero de todo debemos cargar los ficheros necesarios para utilizar las funciones de wordpress:

require_once("../blog/wp-config.php");
require_once("../blog/wp-includes/registration.php");

Donde “../blog/” corresponde a la ruta relativa de vuestro WordPress.

Una vez añadidos los ficheros necesarios (wp-config.php carga las variables de WordPress y algunos ficheros necesarios y el fichero registration.php nos permite utilizar las funciones de registro de usuarios) tan solo tenemos que llamar a la función para registrar usuarios. Tenemos dos opciones: la sencilla (wp_create_user) con sólo dos parámetros y la compleja (wp_insert_user) dónde le podemos pasar todos los detalles del usuario en un array asociativo.

Simple [7]:

wp_create_user($_POST['usuario'],$_POST['contrasenya'],$_POST['email']);

Compleja [8] (podéis ver todas las variables posibles en el Codex de WordPress [8]):

// Rellenamos un array con los datos que queramos añadir
$datos = array("user_login"=>$_POST['nick'], // Nombre de usuario para login
"user_pass"=>$_POST['pass'], // Contraseña
"user_url"=>$_POST['url'], // Website del usuario
"user_email"=>$_POST['email'], // E-mail
"display_name"=>$_POST['nick'], // Nombre a mostrar del usuario en comentarios y mensajes
"first_name "=>$_POST['nombre'], // Nombre del usuario
"last_name"=>$_POST['apellidos'], // Apellidos
"role"=>"contributor");
// Insertamos los datos
wp_insert_user($datos);

Fijaros en la propiedad “role”. Es para designar los permisos del usuario (que podéis consultar en esta página [9]). Si no la ponéis pondrá la que tengáis por defecto configurada en el blog.

Ambas funciones retornan el ID resultante al registrar al usuario, lo que nos puede servir para enviar una activación por e-mail de la cuenta (por ejemplo…).

Pues ya lo tenéis, vuestro sistema de registro de usuarios de WordPress. Seguramente dentro de poco me anime a publicar un post para hacer vuestro propio sistema de login. También publicaré un post para registrar usuarios en phpBB.

A continuación os dejo el código completo para ambas funciones (para hacer copy paste más rápido 😉 ):

Simple..

// Añadimos los ficheros necesarios
require_once("../blog/wp-config.php");
require_once("../blog/wp-includes/registration.php");
// Insertamos los datos
wp_create_user($_POST['usuario'],$_POST['contrasenya'],$_POST['email']);
// $id_usuario = wp_create_user($_POST['usuario'],$_POST['contrasenya'],$_POST['email']);

Compleja..

// Añadimos los ficheros necesarios
require_once("../blog/wp-config.php");
require_once("../blog/wp-includes/registration.php");
// Rellenamos un array con los datos que queramos añadir
$datos = array("user_login"=>$_POST['nick'], // Nombre de usuario para login
"user_pass"=>$_POST['pass'], // Contraseña
"user_url"=>$_POST['url'], // Website del usuario
"user_email"=>$_POST['email'], // E-mail
"display_name"=>$_POST['nick'], // Nombre a mostrar del usuario en comentarios y mensajes
"first_name "=>$_POST['nombre'], // Nombre del usuario
"last_name"=>$_POST['apellidos'], // Apellidos
"role"=>"contributor");
// Insertamos los datos
wp_insert_user($datos);
// $id_usuario = wp_insert_user($datos)

Páginas de referencia: