Múltiples (WordPress + bbPress + MediaWiki) en uno

WordPress + bbPress + Mediawiki

Imagínate que estamos en esta situación:

Tenemos un sitio web colaborativo (tipo wiki) multi-idioma, cada idioma está en un subdominio, cada uno de estos subdominios tiene su portal hecho con WordPress, sus foros con bbPress y sus wikis con MediaWiki, una extra para compartir los archivos (como el Wikimedia Commons) y queremos que los usuarios y las cookies estén unificados, integrados.

De acuerdo, parece algo un tanto descabellado, pero es posible. Pero te aviso que este artículo es bastante extenso, y quizá pesado.

Entonces, con lo que hemos visto, vamos a integrar lo siguiente:

Por supuesto, la cantidad puede ser mayor, pero yo lo explico así porque es lo que yo uso.

Este tutorial también te sirve si no quieres hacer la integración con MediaWiki, por lo que puedes dejarlo antes de tiempo
😆

WordPress

Para empezar, haz las dos instalaciones de WordPress ((Mejor que estén en la misma base de datos, para facilitar las cosas y porque no he encontrado ninguna forma de hacerlo con bases de datos distintas)).

Muy importante: Para que la integración de las cookies funcione correctamente, especialmente en el tema de integración con bbPress, las instalaciones deberían estar en subdominios distintos pero con nombres de directorio iguales.

Es necesario que añadas las “Claves únicas de autentificación” ((Por seguridad y para mejorar la integración)). Ponlas iguales entre los blogs, no entre ellas, para después conseguir unificar las cookies. Esto es bastante importante. La clave NONCE_KEY de cada instalación debería ser distinta. Puedes usar el generador automático que ponen los creadores de WordPress a tu disposición.

Y siento hacerme pesado, pero recuerda poner las claves iguales entre los blogs, no entre ellas, y poner las NONCE_KEY distintas, por seguridad.

Una vez lo hayas hecho, decide cuál de las dos instalaciones será la principal (por ejemplo, la que tenga el prefijo “wp1_“) y cuál la secundaria (en este caso, “wp2_“). Ahora, editemos el archivo wp-config.php esta última. Después de la definición del prefijo de las tablas, hay que añadir:

Para facilitar las cosas, no es necesario compartir la tabla usermeta, ya que si lo haces deberás añadirle unas cuantas cosillas para no perder el acceso administrativo al segundo blog. Lo único bueno de unirlas es que el nombre para mostrar, si es distinto al nombre de usuario, se actualizará en todas las instalaciones. También te sirve, el compartirla, para tener todos los permisos de usuario juntitos, pero como solamente es una cosa visual por si accedes a la BD, mejor no tocarlo ((Yo lo he juntado, lo reconozco. Pero me ha dado unos cuantos quebraderos de cabeza hasta que he descubierto cómo se devolvían los permisos)).

Por cierto, también recomiendo, una vez hechos estos cambios, seguir el tutorial que hizo ejner69 sobre Cambiar el nombre al usuario admin para poder tener el nombre de usuario que quieras.

Lo que falta ahora es integrar las cookies completamente. Esto es algo más tocanarices según cómo tengas montado el tinglado (subdominios, bases de datos, etc.). Yo lo tengo de una forma tan bonita que me ha llevado tres días conseguirlo.

Para encriptar los datos de inicio de sesión, WordPress usa, aparte de las claves AUTH_KEY, SECURE_AUTH_KEY y LOGGED_IN_KEY, otras claves aleatorias y únicas que genera durante la instalación llamadas AUTH_SALT y LOGGED_IN_SALT (y SECURE_AUTH_COOKIE si usas una conexión SSL) y que las guarda en la base de datos. Teniendo esto en cuenta, parece que puede ser difícil integrarlo todo, pero no es así. Simplemente hay que definirlas en el wp-config.php de cada instalación para que sean iguales.

Como si utilizas subdominios dentro del mismo dominio también serán distintos los nombres de las cookies, porque los pone en función del subdominio, al final mejor que hagas una cosa como ésta:

Donde pone numerosyminusculas, pon lo miso en las tres. Lo más recomendable es, por ejemplo, el hash md5 del dominio de tu web o el hash md5 de una frase aleatoria ((Puedes generar esos hashes mediante esta herramienta online)). Eso es simplemente para ponerles un nombre único y que no moleste a las cookies de otras webs.

Ahora puedes probar e iniciar sesión en la instalación que quieras y acceder a la otra. Verás que la sesión también está iniciada. Ten en cuenta que la contraseña del usuario será la que tengas en la instalación de la tabla compartida, lógicamente. Si pruebas a cerrar sesión, verás que también se cierra en ambos

bbPress

Aquí hay que prestar especial atención en la instalación si queremos hacerla más fácil. Para empezar, te recomiendo que añadas el archivo de traducción que ha hecho Fernando dentro de la carpeta /bb-includes/languages. Una vez lo hayas hecho, es tan fácil como acceder a la URL donde estará el foro y escoger es_ES de la lista desplegable. Luego, ¡Vamos a ello!.

Rellenamos la configuración de la base de datos y seguimos con la instalación como si no fueras a integrar WordPress. En este caso, sí que puedes poner las instalaciones de bbPress en bases de datos distintas de las de WordPress. Incluso distintas entre ellas.

Muy importante: Dentro de las claves de seguridad, debes poner las mismas que en la instalación de los WordPress, excepto la NONCE, que debería ser distinta por seguridad.

Una vez llegamos a la página para escoger el nombre de usuario, ponle el mismo que al de la instalación del WordPress. Si no se lo has cambiado, pon admin.

Y haz lo mismo para el segundo foro. Ten en cuenta que lo de las cookies solamente servirá si están en subdominios distintos pero en carpetas con el mismo nombre, que me he pasado muchísimo rato intentando que no sea así, pero lo es.

Ahora hay que editar el archivo bb-config.php de cada instalación. Añade antes del ?>:

AVISO: Donde pone >, debes poner >. Eso es culpa del WordPress, que lo muestra mal.

Cuando en los comentarios digo directorio (de la URL), me refiero justamente a eso, no al directorio completo en el servidor.

Terminando la integración de WordPress + bbPress

¿Te pensabas que ya estaba? Pues no está, no. Ahora solamente falta instalar el plugin bbPress Integration en tus WordPress.

Una vez lo hayas hecho, entra en Opciones -> bbPress Integration y en la URL de bbPress pon:
http://subdominio-inventado.dominio.tld/directorio-bbpress/
Eso del subdominio inventado es para que funcionen las cookies, por supuesto 😆 La URL de los plugins puedes dejarla perfectamente en blanco. Recuerda hacerlo en cada uno de tus WordPress o habrá veces que te será imposible entrar al panel de administración de tus bbPress.

Ahora ya están listas las integraciones de WordPress + bbPress. Puedes probarlo inciando sesión y cerrándola en cualquiera de tus cuatro instalaciones. Verás qué pasada 😀

Ahora, si quieres, puedes seguir leyendo para saber cómo integrarlo con MediaWiki que, aunque parezca mentira, creo que es más sencillo.

Integrándolo todo con MediaWiki

Vale, veo que quieres seguir con esta señora instalación. Me alegro.

No me voy a entretener explicándote cómo se instala MediaWiki, doy por asumido que lo sabes. Pero te recomiendo que hagas las instalaciones de las MediaWiki en una misma base de datos, aunque sea distinta de donde están los WordPress.

Para integrarlo, descárgate el archivo AuthWP.php de aquí ((No doy un enlace más directo porque esa web no es mía y a la extensión le falta algún arreglillo para ser casi perfecta)) y guárdalo en el directorio extensions/ de tus MediaWiki. Te recomiendo que tengas un directorio compartido entre todas las wikis donde guardes todas las extensiones y un archivo compartido entre todos tus LocalSettings.php (mediante un require();) que te cargue las extensiones comunes a todas las wikis.

La extensión AuthWP, lo que hace es copiar los usuarios a de WordPress/bbPress a las MediaWiki y juntar las cookies.

Bueno, que me iba de tema. Una vez lo hayas guardado, edítalo y define la variable $WP_relpath siguiendo el siguiente ejemplo:

Una vez lo hayas hecho, si resulta que aún no está actualizada la extensión (en estos momentos está la versión 2008-12-05, que todavía tiene el fallo), deberás editarla un poco para que te funcione. Busca donde diga:

y sustitúyelo por:

Después, busca:

y cámbialo por:

Vale, ya casi está. En el enlace que te he dado antes para bajar el archivo te dice lo que funciona en estos momentos de la integración y qué no. Lo más importante de lo que falla es:

  • Si cierras sesión en WordPress/bbPress, no la cierras en MediaWiki
  • Si inicias sesión en MediaWiki, no la inicias en WordPress/bbPress

El resto de combinaciones funcionan.

Por suerte, sí que podemos compartir las cookies de las wikis entre ellas para que cuando se cierre la sesión en una wiki, se cierre en el resto y para que cuando se inicie en una wiki, se inicie en el resto. Para eso, en el archivo LocalSettings.php de cada wiki añadimos:

Y ya está, c’est fini, that’s all, això és tot. Si no os creéis que esto funcione, podéis comprobarlo en la Astronomipedia, que intenta ser una wiki sobre astronomía (¡y compatible con la Wikipedia!) y que utiliza todo este tinglado que os acabo de explicar.

Referencias

No, esto no lo he descubierto yo. Todo es gracias a:

¡Suerte! 😉

AVISO: esta publicación es de hace dos años o más. Si es un código o un plugin podría no funcionar en las últimas versiones de WordPress, y si es una noticia podría estar ya obsoleta. Luego no digas que no te hemos avisado.

Valora este artículo para mejorar la calidad del blog ...

Al hacer una valoración se recoge una cookie con la IP de tu dispositivo

FlojitoNo está malEstá bienMe ha servidoFantástico (1 votos, promedio: 1,00 de 5)
Cargando…

Autor: Isb1009

De 1992, cursando 2º de bachillerato tecnológico. Entre mis ideas y sueños descabellados está la de integrar distintos CMS (del tipo que sean) sin reinventar la rueda, simplemente adaptando lo que existe. Amante de los idiomas, creo que Internet debería ser lo más políglota posible. Semi-aficionado a la astronomía, ésta me está llevando a aprender sobre los CMS más que otra cosa (véase la Astronomipedia).

Comparte esta entrada en
468 ad

Al dejar un comentario se solicitan datos como tu correo y nombre que se almacenan en una cookie para que no tengas que volver a completarlos en próximas visitas. Para enviar un comentario debes aceptar nuestra política de privacidad | Responsable de los datos: Fernando Tellado García | Finalidad: Gestión y moderación de comentarios | Legitimación: Tu consentimiento expreso | Destinatario: Disqus (acogido a EU-US Privacy Shield) | Derechos: Tienes derecho al derecho al acceso, rectificación, supresión, limitación, portabilidad y olvido de sus datos

Centro de preferencias de privacidad

Cookies imprescindibles

Se usan para almacenar tu nombre, correo, IP y demás datos que dejas en los formularios de comentarios, contacto, acceso y tus preferencias de privacidad.

AUTH_KEY, SECURE_AUTH_KEY, LOGGED_IN_KEY, NONCE_KEY, comment_author, comment_author_email, comment_author_url, rated, gdpr, gawdp

Cookies de terceros

Usamos cookies de terceros en las que se almacenan externamente para conocer tus usos de navegación, si ya estás suscrito al boletín y los elementos compartidos en redes sociales

cfduit_, intercom-id, intercom-lou, mailerlite:language, mailerlite:webform, _ga, _gid
cfduit_, intercom-id, intercom-lou, mailerlite:language, mailerlite:webform
_ga, _gid

¿Quieres cerrar tu cuenta?

Se cerrará tu cuenta y todos los datos se borrarán de manera permanente y no se podrán recuperar ¿Estás seguro?

Pin It on Pinterest