• Saltar a la navegación principal
  • Saltar al contenido principal
  • Saltar a la barra lateral principal

DecodeCMS

Tu WordPress a otro Nivel ...

  • Acerca de
  • Contacto
  • Inicio
  • Tutoriales
    • Themes
    • Plugins
    • Core
    • Recursos
  • Cursos
  • Acceder
    • Mis cursos
    • Mi Cuenta
    • Acceder
Inicio / Tutoriales / Core / Usar la REST API para crear usuarios en WordPress

Usar la REST API para crear usuarios en WordPress

[ 3 enero 2024 ] [ Autor: Jhon Marreros Guzmán ][ Core - Avanzado] [ ]

funcionalidad

Suscríbete a DecodeCMS:  

En este artículo veremos cómo crear un usuario idéntico desde un sitio web hacia otro sitio web WordPress, para esto usaremos las funciones de WordPress y el uso de la REST API en el sitio web destino.

 

Generalidades

En nuestro ejemplo necesitaremos dos sitios WordPress:

  • El sitio web de origen estará en http://origen.local
  • El sitio en donde se crearán o actualizarán los usuarios estará en http://destino.local.

 

Contraseña de aplicación en el sito web destino

Primero necesitaremos configurar el sitio web destino creando una contraseña de aplicación para algún usuario administrador.

Desde el menú de Usuarios, seleccionar un usuario, en la parte inferior aparecerá una sección para crear una nueva contraseña de aplicación, le asignamos un nombre y luego generamos la contraseña.

Contraseña de aplicación creactión

 

Código para la creación de usuarios

En el siguiente código tienes que cambiar el usuario que estas usando, la contraseña de aplicación y la URL del sitio destino.

add_action( 'user_register', 'dcms_insert_user', 10, 2 );
function dcms_insert_user( $user_id, $userdata ):void {
	$user_app = 'admin';
	$pass_app = 'xxxxxxxxxxxxxxxxxxxxxxxx';

	$url      = 'http://destino.local/wp-json/wp/v2/users';

	$data['username']   = $userdata['user_login'];
	$data['email']      = $userdata['user_email'];
	$data['password']   = $userdata['user_pass'];
	$data['first_name'] = $userdata['first_name'];
	$data['last_name']  = $userdata['last_name'];

	$response = wp_remote_post( $url, array(
		'body'    => $data,
		'headers' => array(
			'Authorization' => 'Basic ' . base64_encode( $user_app . ':' . $pass_app ),
		),
	) );

	if (is_wp_error($response)) {
		error_log(print_r($response->get_error_message(),true));
		return;
	}

	$response = json_decode($response['body']??'{}',true);

	if ( isset($response['code']) ) {
		error_log(print_r($response,true));
		return;
	}

	if ( isset($response['id']) ) {
		update_user_meta( $user_id, 'id_user_remote_site', $response['id'] );
	}
}

En el código anterior:

  • Usamos el hook user_register que se ejecuta cuando se inserta un nuevo usuario.
  • La función dcms_insert_user() a la que hace referencia el hook toma dos parámetros.
  • Dentro de la función definimos las variables para la contraseña de aplicación y la url de la REST API del sitio destino.
  • Guardamos los datos del usuario en un array asociativo llamado $data.
  • Usamos la función de WordPres wp_remote_post() para hacer la solicitud remota.
  • Enviamos la variable data y también la contraseña de aplicación como cabecera.
  • Comprobamos si la respuesta es un objeto de error.
  • Decodificamos la respuesta, comprobamos si la respuesta nos envía algún código de error.
  • Si se creó el usuario debería retornar los datos del usuario, comprobamos el ID.
  • Finalmente guardamos el ID como parte de los metadatos del usuario (Esto para futuras implementaciones de sincronización).

 

Para ver una referencia de todos los campos disponibles que se pueden usar para el usuario en la REST API puedes visitar el siguiente enlace.

 

Código para la actualización de un usuario

El siguiente código es parecido al código anterior, igualmente tienes que cambiar las mismas variables para la contraseña de aplicación.

En el caso de la actualización para formar la URL de la REST API necesitamos tener el ID del usuario creado, es por eso que anteriormente lo guardamos como metadato.

add_action( 'wp_update_user', 'dcms_update_user', 10, 3 );
function dcms_update_user( $user_id, $userdata, $userdata_raw ):void {
	$user_app = 'admin';
	$pass_app = 'xxxxxxxxxxxxxxxxxxxxxxxx';

	$remote_id = get_user_meta( $user_id, 'id_user_remote_site', true );
	if ( empty( $remote_id ) ) {
		return;
	}

	$url = 'http://destino.local/wp-json/wp/v2/users/' . $remote_id;

	$data['username']   = $userdata['user_login'];
	$data['email']      = $userdata['user_email'];
	$data['first_name'] = $userdata['first_name'];
	$data['last_name']  = $userdata['last_name'];
	if  ( isset($userdata_raw['user_pass']) ) {
		$data['password'] = $userdata_raw['user_pass'];
	}

	$response = wp_remote_post( $url, array(
		'body'    => $data,
		'headers' => array(
			'Authorization' => 'Basic ' . base64_encode( $user_app . ':' . $pass_app ),
		),
	) );

	if (is_wp_error($response)) {
		error_log(print_r($response->get_error_message(),true));
	}
}

En el código anterior:

  • En este caso usaremos el hook wp_update_user que hace referencia a la función dcms_update_user().
  • Definimos las variables para la contraseña de aplicación, en el caso de la URL necesitaremos el ID del usuario a actualizar.
  • Obtenemos el ID del usuario de la metadata de usuario y formamos la URL.
  • Guardamos todo lo que queremos actualizar en la variable $data.
  • En el caso de la contraseña, si ha sido actualizada existirá en la variable $userdata_raw, utilizamos esta variable ya que necesitamos la contraseña sin encriptar.
  • Usamos la función wp_remote_post() de WordPress para enviar los datos.
  • Finalmente comprobamos si hay algún error devuelto por el servidor

 

Conclusión

Como has podido comprobar podemos sincronizar los usuarios creados en un sitio web WordPress hacia otro sitio WordPress, tanto para los nuevos usuarios como para la actualización.

 

¿Me ayudas a llegar a más gente?

Twittear Compartir LinkedIn WhatsApp

Artículos Relacionados

  • Crear entradas con la REST API de WordPress desde un sitio web remotoCrear entradas con la REST API de WordPress desde un sitio web remoto
  • Deshabilitar la REST API de WordPressDeshabilitar la REST API de WordPress
  • Leer datos desde una API externa en WordPressLeer datos desde una API externa en WordPress
  • Agregar endpoints a la API REST de WordPressAgregar endpoints a la API REST de WordPress
Valora este artículo : 1 barra2 barras3 barras4 barras5 barras (2 votos, promedio: 5,00 de 5)
Cargando...

Interacciones con los lectores

Para escribir código envolver con: <pre class="language-xxx"><code> </code></pre> ,reemplaza las xxx (php, css, html)

*

* Gravatar habilitado

Barra lateral principal

Curso Decodifica WordPress

Únete a DecodeCMS

Recibirás como regalo:

Guia práctica con video:
¿Quieres agregar código a WordPress? Revisa las diferentes opciones que tienes.Ver más

Omnisend
Alojamiento Wordpress

Niveles

Básico Intermedio Avanzado

Etiquetas

accesibilidad css dashboard editor error funcionalidad herramientas imagen js librería mejoras optimización seguridad SEO social woocommerce

Populares

¿Cómo usar Dashicons en WordPress?

Página de inicio y Página de entradas en WordPress

Ocultar categorías que no están activas en widget de categorías WooCommerce

Archivo de plantilla de acuerdo a url personalizada en WordPress

© logo decode pie
Política de Privacidad | Política de devoluciones
Copyrigth 2026 Todos los derechos reservados