Configurar WP Discourse para mostrar comentarios de Discourse

Puedes usar Discourse como un sistema de comentarios para Wordpress. Las funciones de comentarios dependen de las funciones de publicación, por lo que necesitas tener la publicación configurada para que los comentarios funcionen. Si has configurado la publicación y estás listo para configurar los comentarios, mira este video corto o sigue las instrucciones a continuación.

Siguiente Paso

Una vez que hayas configurado los comentarios, es posible que desees consultar los siguientes temas.


Instrucciones

Configuración de Comentarios

Para que los comentarios de Discourse aparezcan en tu sitio de WordPress, debes seleccionar la configuración Enable Discourse Comments. Cuando esté habilitada, verás dos opciones. La opción Display comments cargará una plantilla de comentarios para cada publicación de WordPress que se haya publicado en Discourse. Esta plantilla mostrará los comentarios de Discourse debajo de las publicaciones de WordPress. La opción Display a link to the comments cargará una plantilla de comentarios que muestra un enlace al tema de Discourse asociado debajo de las publicaciones publicadas. Se mostrará el número de respuestas al tema en el enlace, pero no se mostrarán respuestas en WordPress.

Ambas opciones de comentarios funcionan cargando plantillas de comentarios para las publicaciones de WordPress. Esto significa que solo funcionarán si los comentarios están habilitados para la publicación. Si deseas habilitar los comentarios para todas las publicaciones, pero no deseas que se muestren comentarios históricos de WordPress para las publicaciones que no se han publicado en Discourse, habilita la configuración Remove WordPress Comments Template.

Configuración

Aquí hay algunas descripciones breves sobre lo que hacen las otras configuraciones de comentarios. Si todavía no estás seguro de alguna de las configuraciones, responde a este tema y solicita más aclaraciones.

Load Comments With Ajax

Esta configuración se utiliza para cargar comentarios desde el cliente de Wordpress, en lugar de cargarlos desde el servidor. Esto es útil si el almacenamiento en caché de páginas está impidiendo que se carguen comentarios nuevos en tu sitio.

Load Comment CSS

Esta configuración carga una hoja de estilo que soluciona problemas con las oneboxes y las citas de Discourse cuando se muestran en WordPress.

Show Existing WP Comments

Selecciona esta configuración para mostrar también los comentarios existentes de WordPress para las publicaciones que también se han publicado en Discourse, selecciona la configuración.

Existing Comments Heading

Si estás mostrando comentarios existentes, esta configuración agregará un encabezado encima de los comentarios de WordPress.

Selective Import Settings

Hay una serie de configuraciones que te permiten importar comentarios de forma selectiva. Estas deberían ser autoexplicativas. Los valores predeterminados para cada una de estas son un buen punto de partida, así que solo cámbialos si tienes una razón para hacerlo.

  • Max Visible Comments
  • Min Number of Replies
  • Min Score of Posts
  • Min Trust Level
  • Bypass Trust Level Score
  • Only Import Moderator-Liked
Custom Datetime Format

Esta configuración formatea la fecha que se muestra para cada comentario de Discourse que aparece en tu sitio de WordPress. Comienza con el valor predeterminado. Si deseas cambiar el formato de la fecha, haz clic en el enlace en la descripción de la configuración para obtener detalles sobre cómo hacerlo.

Cache Comment HTML

Esta configuración se puede utilizar para mejorar el rendimiento. El almacenamiento en caché del HTML de los comentarios reduce el número de solicitudes realizadas a Discourse. Su configuración asociada Clear Cached Comment HTML debería ser autoexplicativa.

Verbose Comment Logs

Habilitar esto registrará todas las recuperaciones exitosas de comentarios de Discourse, además de los errores (el valor predeterminado).

Webhook de Sincronización de Datos de Comentarios

Habilitar el webhook de sincronización de datos de comentarios en el panel de configuración “Webhooks” puede reducir en gran medida el número de solicitudes de API realizadas desde WordPress a Discourse. Antes de habilitar el webhook:

  1. visita la URL de Discourse proporcionada en la descripción de la configuración (http://forum.example.com/admin/api/web_hooks).

  2. Haz clic en el botón ‘New Webhook’ y completa el formulario.

    • En el campo Payload URL, introduce la URL que se proporciona en la descripción del campo WP Discourse Sync Comment Data. Será algo como esto, excepto que usará la URL de tu sitio de WordPress: https://wp-discourse.dev/wp-json/wp-discourse/v1/update-topic-content.

    • Asegúrate de que el campo Content Type esté configurado como application/json.

    • En la entrada Secret, introduce una cadena de texto de al menos 12 caracteres. Luego, copia esta misma clave en la configuración de WP Discourse Webhook Secret Key.

    • En el cuadro ‘Which events should trigger this webhook?’, asegúrate de que ‘Post Event’ esté seleccionado.

    • Usa el campo Triggered Categories si solo publicas publicaciones de WordPress en categorías específicas. De esa manera, tu sitio de WordPress no necesitará procesar solicitudes de webhook para temas que no tengan una publicación de Discourse asociada.

    • Deja habilitada la configuración Check TLS certificate of payload url.

    Finalmente, habilita la casilla de verificación ‘Active’ y haz clic en crear. Cuando el webhook se haya guardado, haz clic en el botón Go to events.

  3. De vuelta en WordPress, asegúrate de haber introducido el secreto del webhook de Discourse en el campo Webhook Secret Key y habilita la configuración del webhook Sync Comment Data. Luego guarda las opciones.

El webhook de Discourse debería estar funcionando ahora. Debes verificarlo haciendo clic en el botón Ping del webhook en Discourse (que se encuentra en /admin/api/web_hooks/:webhook_id/events). Asegúrate de que al hacer ping al webhook se devuelva un código de estado de 200.

Ajuste del período de sincronización de comentarios para páginas de archivo de WordPress

Para obtener el número correcto de comentarios de Discourse para una publicación, el plugin necesita realizar periódicamente una solicitud HTTP a Discourse para obtener el número actual de comentarios. En páginas individuales, este período se establece para que no sea más frecuente que cada 10 minutos. Para páginas de archivo, el período se establece para que no sea más frecuente que una vez cada 24 horas. La razón es evitar realizar múltiples solicitudes a Discourse cada vez que se accede a una página de archivo.

Si aún encuentras que el plugin realiza demasiadas solicitudes a Discourse al mostrar las páginas de archivo de tu sitio, puedes ajustar el archive_page_sync_period enganchándote al filtro 'discourse_archive_page_sync_period'. Lo haces agregando algo como esto al archivo functions.php de tu tema:

add_filter( 'discourse_archive_page_sync_period', 'my_namespace_archive_page_sync_period' );
function my_namespace_archive_page_sync_period( $sync_period ) {
  // Esto cambiará el período de sincronización para las publicaciones archivadas a una vez por semana.
  return WEEK_IN_SECONDS;
}

Si encuentras que el plugin no realiza suficientes solicitudes a Discourse para recuperar los números de comentarios actuales para las páginas de archivo, puedes agregar algo como esto al archivo functions.php de tu tema. Esto establecerá el archive_page_sync_period a 10 minutos.
Nota: en un sitio concurrido, esto podría suponer una carga pesada para tu servidor.

add_filter( 'discourse_archive_page_sync_period', 'my_namespace_archive_page_sync_period' );
function my_namespace_archive_page_sync_period( $sync_period ) {
  // Esto cambiará el período de sincronización para las publicaciones archivadas a una vez por semana.
  return 10 * MINUTE_IN_SECONDS;
}

Mostrar comentarios sin cargar la plantilla de comentarios de WordPress

El plugin WP Discourse utiliza la plantilla de comentarios de WordPress para cargar los comentarios de Discourse. Si tu tema no carga la plantilla de comentarios, puedes mostrar los comentarios con la función de ayuda estática get_discourse_comments. Esa función requiere que proporciones el ID de la publicación de WordPress para la que deseas mostrar los comentarios. Aquí tienes un ejemplo simple de su uso:

use WPDiscourse\\Utilities\\Utilities as DiscourseUtilities;
$discourse_comments = DiscourseUtilities::get_discourse_comments(859);
echo $discourse_comments;

Los comentarios se mostrarán de la misma manera que se muestran si seleccionas la opción Enable Discourse Comments/Display Comments (que se encuentra en la pestaña Comment Settings del plugin). Cuando se utiliza esta función, se ignora el valor de esa configuración, pero se respetan todas las demás configuraciones de comentarios.

Solución de problemas

El problema más común con los comentarios de Discourse es que pueden no aparecer instantáneamente después de que se realiza la publicación en Discourse. Este retraso es intencional, ya que el plugin intenta reducir el número de solicitudes que necesita hacer a Discourse. Realizar una solicitud cada vez que se carga la página ralentizará tu sitio. Si no ves que los comentarios aparecen instantáneamente, espera 10 minutos antes de volver a actualizar la página.

Problemas con el número de comentarios al mostrar comentarios de Discourse y WordPress

El plugin wp-discourse utiliza el hook de filtro get_comments_number de WordPress para que el número de comentarios de Discourse creados para una publicación se pueda mostrar en todo tu tema. Esto crea un conflicto cuando se muestran tanto los comentarios de Discourse como los de WordPress para una publicación. El plugin puede resolver ese conflicto en la mayoría de los lugares. Un lugar donde no se puede resolver es en el título del comentario que los temas de WordPress a menudo muestran en la parte superior de la sección de comentarios. Esta es la sección que comienza con algo como “2 pensamientos sobre…”.

La forma más fácil de hacerlo es agregar una regla al archivo css de tu tema.

.discourse-comments-area ~ .comments-area .comments-title  {
	display: none;
}
8 Me gusta

@angus muy buena guía y video, gracias por elaborarlo. Hemos implementado el plugin y estamos atascados en la funcionalidad de comentarios. Tenemos dos preguntas/problemas aquí:

  • Cuando publicamos una respuesta en Discourse (a la publicación compartida desde WordPress), vemos que el recuento de respuestas cambia en WordPress, pero no vemos que aparezca ningún comentario.
  • Nos gustaría desactivar los comentarios de WordPress para que los usuarios solo puedan responder a través de Discourse, ¿es posible?

Esto es lo que vemos, este ‘1’ comentario es de Discourse y notará que la respuesta en sí no es visible:

CC: @Abdelrahman_MoHamed

Hola @Jacob_Peebles,

Suponiendo que has seguido la guía anterior, lo siguiente que debes comprobar es tu tema. ¿Estás utilizando un tema de bloques? Si es así, consulta:

Sí, simplemente desactiva los comentarios en WordPress.

  1. Selecciona Ajustes > Comentarios en el panel de control.
  2. Desmarca la casilla Permitir que las personas publiquen comentarios en las entradas nuevas.
  3. Haz clic en Guardar cambios.
1 me gusta

@angus - ¡genial, funcionó a la perfección! Sí, aparentemente estamos en el editor de ‘bloques’. Puedes ver las cosas funcionando aquí:

La única parte extraña es que los estilos/fuentes no parecen aplicarse a los comentarios de Discourse. No estoy seguro si es solo un problema con nuestro tema o algo que valga la pena señalar.

Gracias de nuevo.

Lo siento, aquí tienes también una captura de pantalla.

Me alegra que te esté funcionando, Jacob.

Necesitarás añadir tu propio estilo para los comentarios. Los comentarios de Discourse tienen intencionadamente muy pocos estilos predeterminados, ya que cada tema tiene su propio enfoque para el estilo. En tu caso, algunos estilos básicos como este deberían funcionar:

ol.comment-list {
    list-style: none;
    padding: 0;
}

img.avatar.photo.avatar-default {
    height: 40px;
    width: 40px;
}

.comment-author.vcard {
   display: flex;
   align-items: center;
   gap: 1em;
}

1 me gusta

Excelente @angus

Hola @angus

¡Gracias por el excelente plugin y las útiles instrucciones!

He integrado Discourse en mi sitio web de Wordpress y está conectado.
Pude crear una publicación en el sitio de WP y ver que se transfirió como un nuevo Tema en Discourse, ¡lo cual es genial!

Sin embargo, sigue mostrando solo el contenido inicial de la publicación como un extracto (hello world, etc.) en Discourse, y no actualiza el contenido del tema de Discourse después de cambiarlo en la publicación de WP. Solo refleja el cambio en el contenido si haces clic en Mostrar publicación completa, lo que significa que no puedo cambiar la configuración para mostrar el contenido completo de la publicación y no solo el extracto. Cuando hago esto, simplemente quita el botón del tema de Discourse y solo muestra el contenido inicial antes de que se actualizara. ¿No sé si me estoy explicando bien?

Y además, ningún comentario publicado desde Discourse como respuesta al tema aparece debajo de la publicación en WP. He habilitado los comentarios y estoy usando el tema Astra, así que no es un editor de bloques. No estoy seguro de qué debería hacer para solucionar esto.

Cualquier consejo sobre estos 2 puntos sería muy apreciado, ¡gracias!

Hola @Clo, gracias por probar el plugin. ¿Podrías aclarar cuál es tu estado ideal para publicar? Intenta presentarlo como una “historia de usuario”. En cuanto a los comentarios, ¿están habilitados los comentarios de WordPress en tu sitio?

Hola @angus

Parece que los comentarios finalmente se han transferido del sitio de Discourse al sitio de WP, solo tomó bastante tiempo. ¡Gracias de todos modos!

Sin embargo, también quería preguntar si es posible que el plugin cree una nueva publicación en WP cada vez que se crea un nuevo tema en Discourse. ¿O solo es posible al revés?

Solo es posible hacer eso con plugins personalizados adicionales en ambos lados, Wordpress y Discourse. El plugin WP Discourse en sí no está diseñado para eso.

Muchas gracias, eso es útil.
¡Gran plugin!

1 me gusta