Cómo iniciar sesión una vez en toda una red WP Multisite
¿Alguien conoce un buen plugin que permita iniciar sesión una vez como Super Admin de la red WP-MS y poder cambiar entre sitios sin tener que volver a iniciar sesión en cada red o cada sitio individualmente?
Gracias

Esto tiene que ver con el dominio de las cookies. Se establece para cada dominio, lo que impide los inicios de sesión en toda la red. Puedes intentar configurar la constante COOKIE_DOMAIN
en tu archivo wp-config.php
.
Por ejemplo, configurándola como vacía, lo que evita que WordPress cambie el dominio de la cookie para cada sitio:
define( 'COOKIE_DOMAIN', '' );
Quizás necesites configurar algunas otras constantes también para que funcione.
define( 'ADMIN_COOKIE_PATH', '/' );
define( 'COOKIEPATH', '' );
define( 'SITECOOKIEPATH', '' );
No me preguntes sobre las desventajas, porque no estoy completamente seguro de ello.
O puedes establecer un dominio de cookie específico para todos los sitios:
define( 'COOKIE_DOMAIN', 'example.com' );
define( 'ADMIN_COOKIE_PATH', '/' );
define( 'COOKIEPATH', '/' );
define( 'SITECOOKIEPATH', '/' );
Probablemente sea una buena idea establecer también un hash de cookie único:
define( 'COOKIEHASH', 'unique_cookie_hash_string' );
En caso de que tengas otras instalaciones de WordPress que utilicen el mismo dominio para las cookies.
Actualización:
De la página de GitHub de WP Multi Network obtuve esto:
Inicio de sesión único
Coloca algo similar a esto en tu
wp-config.php
para compartir cookies en todos los sitios y redes.
// Cookies
define( 'COOKIEHASH', md5( 'yourdomain.com' ) );
define( 'COOKIE_DOMAIN', 'yourdomain.com' );
define( 'ADMIN_COOKIE_PATH', '/' );
define( 'COOKIEPATH', '/' );
define( 'SITECOOKIEPATH', '/' );
define( 'TEST_COOKIE', 'thing_test_cookie' );
define( 'AUTH_COOKIE', 'thing_' . COOKIEHASH );
define( 'USER_COOKIE', 'thing_user_' . COOKIEHASH );
define( 'PASS_COOKIE', 'thing_pass_' . COOKIEHASH );
define( 'SECURE_AUTH_COOKIE', 'thing_sec_' . COOKIEHASH );
define( 'LOGGED_IN_COOKIE', 'thing_logged_in' . COOKIEHASH );
Por lo que parece, es algo genérico de WordPress, no específico del plugin, así que podría valer la pena intentarlo. Podría ser que no hayamos hecho lo suficiente hasta ahora.

Eso no funcionó @ialocin. Inicié sesión en mi red principal/base de WP. Luego, cuando cambié de red, me apareció la pantalla de inicio de sesión nuevamente.

Lástima, agregué información adicional a mi respuesta. Espero que ayude, porque de lo contrario personalmente no puedo decirte más. El resto tendrás que probarlo e investigarlo por tu cuenta. @tammy

Prueba #1 (código abajo) -- esto no funcionó. Inicié sesión exitosamente en la red principal como Super Admin. Luego, cuando cambié de red, se me presentó la pantalla de inicio de sesión.
define('COOKIE_DOMAIN', '');
define('ADMIN_COOKIE_PATH', '/');
define('COOKIEPATH', '');
define('SITECOOKIEPATH', '');

Prueba #2 (código abajo) -- esto tampoco funcionó. Inicié sesión exitosamente en la red principal como Super Admin. Luego, cuando cambié de red, se me presentó la pantalla de inicio de sesión.
define('COOKIE_DOMAIN', 'my-main-wp-network-site.com');
define('ADMIN_COOKIE_PATH', '/');
define('COOKIEPATH', '/');
define('SITECOOKIEPATH', '/');

Lo haré @ialocin. Te avisaré cuando tenga un plugin escrito y probado. Actualmente está más abajo en mi lista de prioridades, así que puede que tarde unas semanas en llegar a ello.

¿son estas 2 redes diferentes de WP? ¿O 1 red de sitios funcionando desde 1 base de código?

Actualmente tengo más de una docena de redes, cada una con 1 sitio dentro @AlexOlder. El Super Admin tiene acceso a todas y cada una de las redes en mi instalación de WP. Así que solo quiero iniciar sesión en WP 1 vez, es decir, para todas y cada una de las redes hoy, mañana y en el futuro. Espero que eso aclare las cosas.

@tammy no lo hace. Si tienes una docena de configuraciones de red diferentes, no hay una forma segura de iniciar sesión en todas ellas a la vez.
Si son una docena de sitios en 1 instalación de WP, entonces cuando inicias sesión deberías estar conectado en toda la red única.

Exactamente @AlexOlder -- de ahí la necesidad de que escriba mi propio plugin. Gracias. Si escribes eso como respuesta... la seleccionaré para cerrar este hilo.

@tammy no lo hace. Si tienes una docena de configuraciones de red diferentes, no hay una forma segura de iniciar sesión en todas ellas a la vez. Si son una docena de sitios en una instalación de WP, al iniciar sesión deberías estar autenticado en toda la red.
– Alex Older 5 de agosto a las 10:35

A partir de WordPress 4.2.4, una instalación multisitio estándar con el Plugin de Desarrollo MU Domain Mapping 0.5.5 y el Plugin Multisite User Management 1.1, iniciar sesión a través del dominio principal registrará a un usuario en todos los sitios a los que esté asignado (todos los sitios como usuario super administrador). Sin embargo, el usuario debe visitar un sitio secundario para establecer la cookie y la autenticación, lo cual se hará automáticamente. Afortunadamente, se puede incluir una solución para cerrar la sesión de un usuario en todos los sitios si se ha visitado cualquier sitio secundario mientras se estaba autenticado en el dominio principal. Actualmente, he encontrado que no cierra la sesión en todos los sitios por defecto. A continuación, se muestra lo que puedes agregar a tu archivo functions.php en tu tema, lo que destruirá las sesiones del usuario en toda la red al cerrar sesión:
function clear_session_on_logout() {
$current_user = wp_get_current_user();
// obtener todas las sesiones para el usuario con ID $user_id
$sessions = WP_Session_Tokens::get_instance($current_user->ID);
// hemos obtenido las sesiones, ¡destrúyelas todas!
$sessions->destroy_all();
}
add_action('clear_auth_cookie', 'clear_session_on_logout');
También es una buena idea actualizar tu tema en toda la red o los temas utilizados en los sitios secundarios para iniciar y cerrar sesión con el wp-admin/ del dominio principal. Sin embargo, si requieres que el usuario cierre sesión en cada sitio secundario "si lo ha visitado" mientras estaba conectado al dominio principal, entonces el gancho de cierre de sesión predeterminado será suficiente.
Para tu información: Si inicias sesión en un sitio secundario con una cuenta de Super Administrador, no te registrará en todos los sitios. Creo que esto es por diseño, y simplemente es una solución fácil modificando el gancho de inicio y cierre de sesión del tema para que siempre use el dominio principal. Si prefieres redirigir de vuelta al dominio secundario al iniciar y cerrar sesión, también se puede hacer un gancho simple para esto.

Además, he encontrado molesto el menú desplegable predeterminado "Mis sitios" en la barra de wp-admin, ya que te redirige al wp-admin/ del sitio secundario, lo que obliga a cualquier usuario (incluido el super administrador) a iniciar sesión nuevamente en el sitio secundario, incluso si ya está autenticado en el dominio principal (extraño). Si visitas cualquier otra página que no sea el directorio wp-admin/ de un sitio secundario, el usuario se autenticará automáticamente y aparecerá la barra de administración. Una solución sencilla en la barra de wp-admin es cambiar los enlaces del menú desplegable para que apunten al site_url(); del sitio secundario.

Gracias @ZachGoldsmith por intervenir en esto. Estoy buscando un inicio de sesión único para todas mis redes
...no solo para los sitios
dentro de cada red
. Así que he comenzado a escribir mi propio inicio de sesión para lograrlo, ya que no parece haber uno disponible que lo haga.
