El problema y la solución

La empresa de alquiler de apartamentos apartamentos.molones.eu se va a expandir y crear una división de alquiler de coches.molones.eu . Para ello va a crear una nueva web pero quiere compartir la base de datos de los usuarios actuales y tenerla sincronizada bidireccionalmente del site principal al site secundario.

Lo que necesitamos crear

Por lo tanto necesitamos 2 webs independientes con WordPress y compartan los mismos datos de los usuarios para que se puedan lograr ena web u otra.

Además necesitamos que los nuevos usuarios que se creen también sean compartidos

Si están bajo en mismo dominio que cuando me loguee en una web que automagicamente este logueado en la otra

Técnicamente

  • Un VPS Ubuntu
  • LEMP
  • 2 dominios o subdominios

Instalar 2 WordPress en un NGINX

Compartir tabla de usuarios

WordPress permite cambiar la tabla users y usermeta que vienen por defecto en la instalación, para ello tenéis que añadir estas lineas antes.

Para saber más sobre personalizaciones de wp-config.php podéis ir a https://wpconfig.wpsysadmin.com/

//End wp-config.php
$table_prefix_users = 'wpimp_'; //Cambiar por por el prefijo de la tabla 'master' que inicialmente tiene los datos del usuario 


define( 'CUSTOM_USER_TABLE', $table_prefix_users .'users' );
define( 'CUSTOM_USER_META_TABLE', $table_prefix_users .'usermeta' );

Sincronizar las privilegios entre sites

Ahora necesitamos sincronizar también los privilegios entre los sites que se encuentran en la tabla de user_meta. Para hacer esto tenemos que poner el siguiente código en functions.php, plugin, fragmento de código o mi recomendación en un mu-plugins

function ib_save_role( $user_id, $role ) {


	// Sitio 1

	$prefijo_1 = 'wpimp_';
	
	//Sitio 2
	$prefijo_2 = 'wp2_';


	
	$capabilities= get_user_meta( $user_id, $prefijo_1 . 'capabilities', true );
	$user_level= get_user_meta( $user_id, $prefijo_1 . 'user_level', true );

	if ( $capabilities ){
		update_user_meta( $user_id, $prefijo_2 . 'capabilities', $caps );
	}

	if ( $user_level){
		update_user_meta( $user_id, $prefijo_2 . 'user_level', $level );
	}
}

add_action( 'set_user_role', 'ib_save_role', 10, 2 ); //Fires after the user’s role has changed.


Gracias a las fuentes originales que me han compartido el conocimiento:

https://kinsta.com/es/blog/compartir-logins/

https://wpconfig.wpsysadmin.com/

https://ayudawp.com/dos-blogs-wordpress-con-los-mismos-usuarios/

Leave a Comment

Your email address will not be published. Required fields are marked *