El plugin WP Discourse te permite configurar DiscourseConnect en WordPress para que tus usuarios puedan usar su cuenta de WordPress para iniciar sesión en Discourse, o su cuenta de Discourse para iniciar sesión en WordPress. Antes de configurar DiscourseConnect, primero debes instalar el plugin WP Discourse en WordPress y conectarlo con tu instancia de Discourse. Si estás listo para comenzar, empieza viendo este breve video o sigue las instrucciones a continuación.
Siguiente paso
Una vez que hayas configurado DiscourseConnect, es posible que quieras consultar los siguientes temas:
Instrucciones
Establecer una clave secreta
Ya sea que estés configurando WP Discourse como proveedor o cliente de DiscourseConnect, necesitas establecer una clave secreta. Ve a la pestaña «Clave secreta de DiscourseConnect» e introduce una cadena de texto (se permiten números, letras y símbolos) de al menos 10 caracteres. Usa las mismas reglas que aplicarías para crear una contraseña segura. Asegúrate de guardarla cuando termines.
Luego, abre la configuración de tu sitio Discourse (en el panel de administración) y busca «discourse connect». Una de las opciones cerca de la parte superior será discourse connect secret. Pega allí la clave secreta que configuraste en WP Discourse y haz clic en el check verde.
Iniciar sesión en Discourse con WordPress (Proveedor de DiscourseConnect)
Asegúrate de que WP Discourse esté conectado a tu instancia de Discourse y de que la clave secreta esté configurada (
) antes de seguir estas instrucciones.
Para permitir que tus usuarios inicien sesión en Discourse usando sus credenciales de WordPress, debes configurar WP Discourse como proveedor de DiscourseConnect. Ve a la pestaña DiscourseConnect Provider en la configuración de WP Discourse, selecciona la casilla Enable DiscourseConnect Provider y guarda los cambios.
A continuación, ve a la configuración de tu sitio Discourse y escribe «discourse connect» en el cuadro de búsqueda para ver todas las opciones de DiscourseConnect. Primero, establece discourse connect url con la URL de tu sitio WordPress. El paso final es seleccionar enable discourse connect. Asegúrate de estar listo antes de activarlo, ya que una vez hecho, tus usuarios solo podrán iniciar sesión en Discourse mediante WordPress.
Una vez habilitado DiscourseConnect en Discourse, para verificar que está configurado correctamente, abre una ventana de incógnito en tu navegador. Mantén tu ventana normal (no incógnito) con una cuenta de administrador iniciada sesión (por si algo sale mal y necesitas revertir los ajustes). En la ventana de incógnito, notarás que el botón «Registrarse» de Discourse ya no aparece. Haz clic en el botón «Iniciar sesión». Deberías ver una pantalla de inicio de sesión de WordPress. Ingresa tus credenciales de WordPress para iniciar sesión. Luego deberías ser redirigido de nuevo a Discourse y haber iniciado sesión.
Si algo sale mal o notas que algo no está correcto, vuelve a tu ventana normal del navegador y desactiva enable discourse connect para permitir que tus usuarios inicien sesión en Discourse de forma habitual. Si por alguna razón ya no estás iniciada sesión en tu cuenta de administrador en la ventana normal, consulta la sección «Desactivar DiscourseConnect mediante la consola de Discourse» en la solución de problemas más abajo para recuperar el acceso a tu instancia de Discourse.
Verificación de correo electrónico
Discourse espera que todas las direcciones de correo electrónico de los usuarios estén verificadas, mientras que WordPress no obliga a los usuarios a verificar su correo. En una configuración predeterminada de WordPress, es bastante fácil verificar el correo de un usuario durante el proceso de registro, pero si un sitio utiliza un plugin que crea un formulario de registro en el frontend —por ejemplo, el formulario de registro que se puede añadir con WooCommerce— el plugin WP Discourse no puede verificar el correo del usuario.
Si los correos de los usuarios no se verifican en WordPress, antes de que un usuario de WordPress pueda iniciar sesión en el foro, deberá responder a una notificación de verificación de correo enviada por Discourse. El plugin cuenta con algunos filtros que pueden usarse para sobrescribir este comportamiento. Consulta el código, comenzando aquí, para más detalles.
Eliminar la bandera require_activation
Si estás seguro de que WordPress está autenticando las direcciones de correo electrónico, puedes indicarle a Discourse que no es necesario. Para eliminar completamente la bandera require_activation, agrega algo como esto en tu sitio WordPress (por ejemplo, en el archivo functions.php de tu tema):
// Reemplaza 'my_prefix' con el prefijo de tu sitio.
add_filter( 'discourse_email_verification', 'my_prefix_discourse_email_verification' );
function my_prefix_discourse_email_verification( $require_activation ) {
return false;
}
Para eliminar la bandera require_activation para usuarios específicos, usa algo como esto:
// Reemplaza 'my_prefix' con el prefijo de tu sitio.
add_filter( 'discourse_email_verification', 'my_prefix_discourse_email_verification', 10, 2 );
function my_prefix_discourse_email_verification( $require_activation, $user_id ) {
$user = get_userdata( $user_id );
if ( /* alguna condición evaluada contra $user */ ) {
return true;
}
return false;
}
Webhook de datos de usuario
Este webhook existe por razones históricas: ahora es posible completar automáticamente el campo Nombre de Discourse utilizando la opción del proveedor de DiscourseConnect «Crear o sincronizar usuarios de Discourse al iniciar sesión».
El webhook Update Userdata (en el panel de configuración de «Webhooks») puede usarse cuando WordPress es el proveedor de DiscourseConnect para tu instancia de Discourse. El webhook completa automáticamente el campo Nombre de Discourse del usuario en WordPress.
Crear un enlace de inicio de sesión de DiscourseConnect
Si tienes habilitada la opción de proveedor de DiscourseConnect, puedes añadir un enlace de inicio de sesión de DiscourseConnect a tu sitio WordPress creando un enlace con la siguiente estructura:
<a href="https://discourse.example.com/session/sso?return_path=/">Comunidad</a>
Establece el valor de return_path con la página de tu foro donde deseas que el usuario termine. Puedes añadir un enlace de inicio de sesión SSO a un menú de WordPress agregando una URL con esta estructura como un enlace personalizado en la sección Menús del panel de administración de WordPress.
Iniciar sesión en WordPress con Discourse (Cliente de DiscourseConnect)
Para habilitar que tu sitio funcione como cliente de DiscourseConnect para Discourse, haz clic en la pestaña DiscourseConnect Client. En esa página, selecciona las opciones Enable DiscourseConnect Client y Add Login Link.
Ahora ve a la página de administración/configuración de tu instancia de Discourse y busca «discourse connect» para ver todas las opciones de DiscourseConnect.
- selecciona la configuración «enable discourse connect provider»
- copia tu
Clave secreta de DiscourseConnectdesde WordPress al campo «secret» de la configuración «discourse connect provider secrets» de Discourse. En el campo «domain» de esa configuración, ingresa el dominio de tu sitio WordPress. Luego haz clic en el check verde para guardar los cambios.
Una vez completado, la configuración «discourse connect provider secrets» en Discourse debería verse así (con el dominio establecido en el de tu sitio WordPress):
Discourse ahora debería funcionar como proveedor de DiscourseConnect para tu sitio WordPress.
Abre tu sitio WordPress en una ventana de incógnito en tu navegador. Cuando vayas a la página de inicio de sesión, deberías ver un enlace «Iniciar sesión con Discourse» debajo del formulario de inicio de sesión. Haz clic en él y serás llevado al formulario de inicio de sesión de Discourse. Inicia sesión allí y serás redirigido de nuevo a la página de inicio de sesión de WordPress con un mensaje indicando que necesitas sincronizar tu cuenta con Discourse. Sigue las instrucciones del mensaje para vincular tus cuentas, y deberías poder iniciar sesión en tu sitio WordPress a través de Discourse.
Nota: este comportamiento solo afecta a usuarios que ya tienen cuentas tanto en WordPress como en Discourse. Las nuevas cuentas de WordPress creadas a través de DiscourseConnect podrán iniciar sesión libremente en WordPress la primera vez que hagan clic en el enlace «Iniciar sesión con Discourse». Para facilitar el inicio de sesión a través de Discourse a usuarios con cuentas existentes tanto en tu sitio WordPress como en tu foro de Discourse, selecciona la casilla Sync Existing Users by Email en la pestaña de opciones de DiscourseConnect Client.
Sincronizar el cierre de sesión de Discourse
Cuando DiscourseConnect está habilitado, el cierre de sesión de Discourse puede sincronizarse con tu sitio WordPress agregando la home_url de tu sitio con el parámetro de consulta request=logout a la configuración de sitio de Discourse logout redirect. Esta configuración se encuentra en la sección de configuración de Discourse en /admin/site_settings/category/users. Aquí tienes un ejemplo de URL de «logout redirect»:
http://ejemplo.com/?request=logout
Solución de problemas
Si tienes problemas al usar WordPress como proveedor de DiscourseConnect para tu foro, lo primero que debes verificar es:
- que las claves secretas de DiscourseConnect establecidas en WordPress y Discourse sean idénticas
- que hayas seleccionado
Enable DiscourseConnect Provideren tu sitio WordPress - que hayas ingresado la
discourse connect urlcorrecta en Discourse.
«Error de inicio de sesión» al usar DiscourseConnect
Si los usuarios reciben un mensaje de «Error de inicio de sesión» al intentar iniciar sesión en Discourse, consulta:
Debug and fixing common DiscourseConnect issues.
Desactivar DiscourseConnect
Si DiscourseConnect no funciona para ti, puedes desactivarlo deshabilitando la configuración de sitio enable discourse connect. Si no estás iniciada sesión en ninguna cuenta de administrador para desactivarlo, no te preocupes; hay varias formas de volver a entrar para desactivarlo.
Iniciar sesión mediante /users/admin-login
Abre una nueva ventana del navegador e ingresa la URL de tu foro en la barra de direcciones seguida de /users/admin-login, por ejemplo:
https://comunidad.misitio.com/users/admin-login
Deberías ver un campo que te pide tu correo de administrador. Después de enviar tu correo, recibirás un mensaje con un enlace que te permitirá iniciar sesión directamente en tu cuenta de administrador. Luego puedes ir a la configuración de tu sitio y desactivar enable discourse connect para deshabilitar DiscourseConnect.
Si esto no funciona por alguna razón, no te preocupes; aún puedes desactivar DiscourseConnect desde la consola de tu servidor (
)
Desactivar DiscourseConnect mediante la consola del servidor
Si no sabes qué es la consola del servidor o no tienes acceso a ella, contacta a tu proveedor de hosting para obtener ayuda. Después de conectarte por SSH a tu servidor, los comandos que debes ejecutar son los siguientes:
cd /var/discourse
./launcher enter app
rails c
SiteSetting.enable_discourse_connect=false
exit
exit







