¿Cuál es la mejor manera de compartir datos de usuarios en varios sitios web de Wordpress?

9

En primer lugar, Multisite no es lo que estoy buscando. Tengo 5 sitios web que usan Wordpress, todos en dominios separados para los que me gustaría habilitar las cuentas de usuario. Necesito que los datos del usuario se compartan en toda la red y cuando un usuario cree una cuenta, también tendrá acceso instantáneo a todos los demás sitios web. Lo que estoy tratando de hacer no lo recomienda Wordpress cuando uso Multisite:

  

Si planea crear sitios que estén fuertemente interconectados, que compartan datos o compartan usuarios, entonces una red multisitio podría no ser la mejor solución.   - enlace (primer párrafo, tercera oración)

He intentado usar el "truco de la tabla de usuarios compartidos" como se menciona aquí enlace y aquí enlace y varios otros lugares ... el problema es que esta información tiene de 2 a 7 años y estoy usando Wordpress 3.5.1 y este "truco" no parece funcionar.

He intentado insertar este código en wp-config alrededor de la línea $table_prefix .

define('CUSTOM_USER_TABLE', 'wp_users');
define('CUSTOM_USER_META_TABLE', 'wp_usermeta');

En pocas palabras, no creo que este truco funcione más porque no puedo iniciar sesión en el segundo sitio en el lado del administrador en absoluto.

¿Alguna sugerencia sobre cuál sería la mejor manera de vincular estos datos?

    
pregunta Ian 12.02.2013 - 00:36

3 respuestas

8

Bueno, primero que nada, me siento como un idiota, aunque en mi defensa, la mayoría de los artículos que hablan de esto no mencionan un detalle crucial para hacer que esto funcione. La respuesta es que necesita establecer permisos para al menos un administrador en la base de datos. Esta información se puede encontrar en el Codex aquí: enlace

Después de configurar el archivo wp-config.php, es imperativo que realice un cambio en la fila maestra de usermeta (en mi caso wp_usermeta), la fila wp_capabilities y la columna meta_value. Haga esto a través de phpMyAdmin.

Nota: Haga esto para que al menos un administrador de usuarios inicie sesión. Puede ajustar todos los demás usuarios / roles de administrador desde el servidor una vez que ingrese.

Paracadasitiowebquesecrea,debetenereseprefijodesitionuevoasignadoalroldeusuarioadministrador.

Enmicaso,yaquesolotengoestofuncionandoen2sitiosenestemomento,seveasí:

a:1:{s:13:"administrator";s:1:"1";}
tbs_capabilities = a:1:{s:13:"administrator";s:1:"1";}

La primera línea establece los permisos para el prefijo de tabla predeterminado (en este caso wp_), y la segunda línea establece los permisos para el segundo sitio web (en este caso con el prefijo tbs_).

¡Gracias a brasofilo por el comentario que me indicó que cavar un poco más para finalmente resolver mi problema!

Espero que esta respuesta pueda ayudar a otros que tenían el mismo problema que yo.

    
respondido por el Ian 12.02.2013 - 08:22
2

Al compartir wp_users y wp_meta hay otro problema, otra instalación de wordpress reconoce a los usuarios pero no reconoce los roles de los usuarios que vienen del otro sitio web . El rol aparece como indefinido.

Entonces, editó su wp-config.php según sea necesario:

define('CUSTOM_USER_TABLE', 'someprefix_users');
define('CUSTOM_USER_META_TABLE', 'someprefix_usermeta');

Creo que la forma más fácil de hacer esto, sin modificar la base de datos, es mediante el uso de wp internals. Al iniciar sesión, es posible asignar un rol. Digamos que necesitamos el rol de colaborador para todos y el rol de administrador para el usuario 'superman'.

function check_user_role($user_login, $user) {
  if ( $user_login == 'superman' ) {
     $user->add_role('administrator');
     } else {
     $user->add_role('contributor');
  }
}

// the action fired on login
add_action('wp_login', 'check_user_role', 10, 2);

Por lo tanto, los usuarios que provienen del sitio web inicial reciben el rol de "colaborador" cuando inician sesión.

  • Puede eliminar la verificación de usuario después de iniciar sesión con el usuario administrador.
  • Los usuarios pueden tener más de un rol, las capacidades son importantes.

enlace

    
respondido por el cenk 24.02.2015 - 02:58
0

Tuve que crear una nueva fila:

meta_key='tbs_capabilities' meta_value='a:1:{s:13:"administrator";b:1;}'

y user_id=1 . El método que describiste no funcionó.

    
respondido por el James Smith 02.06.2014 - 05:59

Lea otras preguntas en las etiquetas