WordPress

Cómo Compartir Usuarios e Inicios de Sesión entre Blogs de WordPress

¿Quieres compartir usuarios y sesiones de acceso entre dos o más sitios web de WordPress? Si es así, puedes aprender a hacerlo paso a paso siguiendo esta guía.

Recientemente, me encontré en una situación en la que necesitaba añadir una “sección” de bbPress y BuddyPress a un sitio web (al que llamaremos SITIO B), aunque el sitio web principal (SITIO A) y el sitio B debían tener instalaciones de WordPress diferentes. Por suerte para mí, ambos sitios web estaban alojados en el mismo servidor, así que esto facilitó todo el escenario.

Una vez que lo terminé y lo hice funcionar, decidí escribir un artículo sobre ello para evitarte algunos de los dolores de cabeza que tuve al hacer esto. Además, el proceso puede extenderse a tantos sitios web como necesites. En mi caso, sólo iba a necesitar sincronizar los datos de acceso y las cookies entre dos instalaciones de WordPress.

Recientemente he descubierto este plugin, que parece hacer lo mismo y sin todo el trabajo requerido en mi tutorial. Ahora recomiendo darle una oportunidad a WP Remote Users Sync.

Requisitos/Escenario:

  • El SITIO A y el SITIO B deben estar en el mismo dominio de nivel superior (subcarpetas o subdominios)
  • El SITIO A y el SITIO B deben usar la misma base de datos

Probablemente sea obvio, pero también necesitará acceso FTP a ambos sitios web, vamos a abrir y editar wp-config.php para ambos sitios web. Si cumple con los requisitos, podemos seguir adelante.

Como vamos a trabajar con wp-config.php y las bases de datos, es mejor estar seguros y hacer una copia de seguridad completa del sitio web, o al menos de la base de datos y de wp-config.php.

Compartir Users y User Meta

Para tener el mismo nombre de usuario y contraseña en ambos sitios web, vamos a utilizar las mismas tablas de la base de datos. Si estás usando el prefijo por defecto, éstas deberán llamarse wp_users y wp_usermeta.

1. Compruebe el prefijo de la tabla del sitio A

Si no sabe con seguridad el prefijo de la tabla de su sitio, abra el wp-config.php del sitio A y busque esta línea:

$table_prefix  = 'wp_';

En la mayoría de los casos, será wp_, pero si el tuyo es diferente, recuérdalo porque lo usaremos también para el wp-config.php del Sitio B. Mantenga wp-config.php abierto, vamos a necesitar más información más tarde, así como para editarlo.

2. Instalar WordPress para el sitio B

Ten en cuenta que usaremos la misma base de datos que el Sitio A, así que tendrás que usar un prefijo de tabla diferente para el Sitio B. En mi ejemplo, decidí usar com_, abreviatura de Comunidad. Puedes usar lo que veas que te gusta, no importa.

Si utilizas herramientas para la instalación automatizada de WordPress que no te permiten seleccionar la base de datos y el prefijo, no te preocupes porque puedes cambiarlos después desde wp-config. Sólo asegúrate de que tienes WordPress instalado en una subcarpeta o subdominio.

Abra el wp-config.php del Sitio B, y reemplace el nombre de la base de datos, el usuario y la contraseña para que sean los mismos que los del Sitio A.

define('DB_NAME', 'siteAdatabase');
define('DB_USER', 'siteAuser');
define('DB_PASSWORD', 'siteApassword');

Ahora ambos sitios utilizarán la misma base de datos. Asegúrese de que el sitio B utiliza un prefijo de tabla diferente.

$table_prefix  = 'com_';

3. Compartir usuarios de WordPress entre los sitios web

Para ello, todo lo que tenemos que hacer es asegurarnos de que el Sitio B está utilizando las mismas tablas para users y usermeta que el Sitio A. Abra wp-config.php del Sitio B y añada las siguientes líneas justo antes de /* Eso es todo, ¡deja de editar! Feliz blogueo. */

define( 'CUSTOM_USER_TABLE', 'wp_users' );
define( 'CUSTOM_USER_META_TABLE', 'wp_usermeta' );
/* Eso es todo, ¡deja de editar! Feliz blogueo. */

Tenga en cuenta que wp_ es el prefijo de la tabla del sitio A. Si el tuyo es diferente necesitas actualizar estas líneas.

Gran trabajo, ambos sitios están ahora compartiendo los mismos usuarios (si hiciste todo bien).

Compartir las cookies de inicio de sesión

Ahora que ambos sitios web están usando los mismos datos de acceso, notarás que si cambias de sitio web tendrás que volver a iniciar sesión. Esto se puede arreglar compartiendo las cookies de inicio de sesión, así es como se hace.

1. Edite wp-config.php del Sitio A

Justo antes de /* ¡Eso es todo, deja de editar! Feliz blogueo. */, añada las siguientes líneas:

define( 'COOKIE_DOMAIN', 'tusitioweb.com' ); 
define( 'COOKIEHASH', md5( 'https://tusitioweb.com' ) ); 
/* ¡Eso es todo, deja de editar! Feliz blogueo. */

En la primera línea, tendrá que sustituir tusitioweb.com por su dominio actual. En la segunda línea, tienes que poner la dirección de tu sitio de WordPress (URL), que puedes obtener desde Ajustes > Generales

No cierre todavía el wp-config.php del Sitio A, aún necesitaremos información para el Sitio B.

2. Edite el wp-config.php del Sitio B

Al igual que hicimos con el nombre de la base de datos, el usuario y la contraseña, ahora copiaremos las siguientes líneas del sitio A y sustituiremos las existentes en el sitio B:

define('AUTH_KEY',         'stringde40caracteres');
define('SECURE_AUTH_KEY',  'stringde40caracteres');
define('LOGGED_IN_KEY',    'stringde40caracteres');
define('NONCE_KEY',        'stringde40caracteres');
define('AUTH_SALT',        'stringde40caracteres');
define('SECURE_AUTH_SALT', 'stringde40caracteres');
define('LOGGED_IN_SALT',   'stringde40caracteres');
define('NONCE_SALT',       'stringde40caracteres');

Obviamente, no encontrará nada en esa cadena de nombres de 40 caracteres, sino algunas cadenas aleatorias diferentes de 40 caracteres. A continuación, tenemos que asegurarnos de que el Sitio B está compartiendo las cookies de inicio de sesión con el Sitio A.

Al igual que en el paso anterior, ahora editaremos el wp-config.php del Sitio B y añadiremos las mismas líneas que añadimos para el Sitio A.

define( 'COOKIE_DOMAIN', 'tusitioweb.com' ); 
define( 'COOKIEHASH', md5( 'https://tusitioweb.com' ) ); 
/* ¡Eso es todo, deja de editar! Feliz blogueo. */

Obtenga derechos de administrador en su segundo sitio (sitio B)

Una vez que haya realizado los pasos anteriores, notará que sus sitios web están efectivamente sincronizando las sesiones de inicio de sesión, pero no se le permite acceder al panel de administración. Aparecerá este mensaje de error: Lo sentimos, no puede acceder a esta página.

Para acceder a ella, tendremos que editar manualmente la tabla de la base de datos wp_usermeta. Hay muchas opciones para hacer esto, la mayoría de ustedes tendrán phpMyAdmin instalado en su servidor. Personalmente, estoy usando Adminer (también conocido como phpMinAdmin) porque rara vez edito la base de datos y no lo necesito instalado permanentemente.

A continuación, abra su base de datos y vaya a la tabla wp_usermeta. Si también usas Adminer, tendrás que hacer clic en Seleccionar datos para encontrar wp_capabilities meta_key.

Copiar el meta_value de wp_capabilities de su usuario administrador, crear un Nuevo elemento y establecer:

  • umeta_id (déjelo en blanco, se incrementará automáticamente)
  • user_id: 1 (para la mayoría de ustedes, 1 será el user_id del administrador en el sitio A)
  • meta_key: com_capabilities (com_ es el prefijo del sitio B. Sustitúyalo por su prefijo)
  • meta_value: Copiar-pegar el mismo meta_value de wp_capabilities para user_id = 1

Cuando esté hecho, debería tener este aspecto.

Y ahora ya has terminado. Tus sitios web están compartiendo usuarios, inicios de sesión y te has dado a ti mismo el rol de usuario administrador en el sitio B también.

Publicidad

Síguenos en Facebook