El enlace de WP a Discourse no se muestra al usar código personalizado

Hola,

Tengo un problema en el que en el lado de WP no hay ningún enlace disponible para el foro de Discourse. Aquí hay algunas respuestas a temas del foro que encontré sobre esto:

  • Todos los campos de ‘Contenido de texto’ están completos en el administrador de WP → Sección de complementos.
  • La sincronización se ejecuta; puedo ver los comentarios en ambos lados.
  • La cadena de URL está disponible en la tabla de la base de datos _postmeta

image

La sección de comentarios me muestra Avisos:

**Notice**: Trying to access array offset on value of type null in **/home/u48255p44743/domains/fxweb.snowfreakz.nl/public_html/wp-content/plugins/wp-discourse/lib/discourse-comment-formatter.php** on line **90**
**Notice**: Trying to access array offset on value of type null in **/home/u48255p44743/domains/fxweb.snowfreakz.nl/public_html/wp-content/plugins/wp-discourse/lib/discourse-comment-formatter.php** on line **106**
**Notice**: Trying to access array offset on value of type null in **/home/u48255p44743/domains/fxweb.snowfreakz.nl/public_html/wp-content/plugins/wp-discourse/lib/discourse-comment-formatter.php** on line **127**
**Notice**: Trying to access array offset on value of type null in **/home/u48255p44743/domains/fxweb.snowfreakz.nl/public_html/wp-content/plugins/wp-discourse/lib/discourse-comment-formatter.php** on line **127**
**Notice**: Trying to access array offset on value of type null in **/home/u48255p44743/domains/fxweb.snowfreakz.nl/public_html/wp-content/plugins/wp-discourse/lib/discourse-comment-formatter.php** on line **148**
**Notice**: Trying to access array offset on value of type null in **/home/u48255p44743/domains/fxweb.snowfreakz.nl/public_html/wp-content/plugins/wp-discourse/lib/discourse-comment-formatter.php** on line **148**

Todos están relacionados con la $URL en el archivo. Estoy llamando a los comentarios con:

global $post;
use WPDiscourse\Utilities\Utilities as DiscourseUtilities;
$discourse_comments = DiscourseUtilities::get_discourse_comments($post->ID);
echo $discourse_comments;
?>

Ejemplos de URL:
https://fxweb.snowfreakz.nl/nogmaals-een-test/
https://fxdisc.snowfreakz.nl/t/nogmaals-een-test/23/2

echo get_post_meta( $post->ID, 'discourse_permalink', true );

Al colocar la llamada directa anterior, no obtengo ningún contenido como enlace (lo encontré en otro tema).

Ejecutando Apache / PHP7.4 / WP 6.0.2
Después de unas horas de solución de problemas, me he quedado sin opciones. ¡¿Quizás alguien tiene una idea?!
Gracias de antemano,

Joep

Hola Joep,

Si ambas cosas son ciertas, entonces hay algún otro problema (no WP Discourse) con tu sitio.

¿Ha empezado esto recientemente? ¿Qué más ha cambiado en tu instalación de WP recientemente? Otros plugins, temas, caché, etc.

Hola Angus,

Gracias por contactarme… es una instalación “fresca” de Wordpress que ejecuta el constructor de plantillas Bricks y acabo de instalar WPdiscourse para la conexión. Aparte del almacenamiento en caché del servidor mod_headers, no hay otros complementos agresivos que alteren ningún script.

Acabo de agregar la línea PHP directa nuevamente y… mágicamente la URL está ahí. No tengo idea de qué hice diferente.

<?php
global $post;
use WPDiscourse\Utilities\Utilities as DiscourseUtilities;
$discourse_comments = DiscourseUtilities::get_discourse_comments($post->ID);
echo $discourse_comments;

echo get_post_meta( $post->ID, 'discourse_permalink', true );
?>

Pero todavía tengo los Avisos que se relacionan con las líneas de código donde debería construirse la URL y el enlace después de “Continuar la discusión en” no se muestra.

https://fxweb.snowfreakz.nl/nogmaals-een-test/

Joep

Ok. ¿Por qué estás cargando los comentarios y el permalink usando tu propio código personalizado? El plugin se encarga de esto por ti.

Hola,

Cuando incluyo los comentarios de “main” de WordPress (que es un elemento de plantilla de Bricks), muestra el “formulario de comentarios normal de WP” que no es reemplazado por el plugin de reseñas de Discourse. Vea la URL de arriba; cambié el diseño agregando los comentarios de WP debajo del Blog.

Configuración del backend

Por lo tanto, agregué el código manualmente, ya que eso mostró las reseñas y probablemente anula cualquier incompatibilidad del constructor de Bricks.

Joep

1 me gusta

Ok. Probablemente haya algún problema de prioridad de carga con el generador de plantillas que estás usando aquí. Intentaré recrearlo mañana. Espera.

¿Puedo enviarte el creador de plantillas como referencia?

Habrá varias actualizaciones en la función de utilidad get_discourse_comments en la próxima versión (2.4.6), que actualmente se está preparando para su lanzamiento. La firma del método de utilidad actualizado se verá así

/**
* Obtiene el HTML del comentario de Discourse para que se pueda mostrar sin cargar la plantilla de comentarios.
*
* @param int $post_id El ID de la publicación para mostrar los comentarios.
* @param bool $perform_sync Determina si se realiza una sincronización de comentarios al cargar los comentarios.
* @param bool $force_sync Determina si se omite la caché de sincronización de comentarios al cargar los comentarios.
* @param string $comment_type Tipo de visualización del comentario.
*
* @return string
*/
public static function get_discourse_comments( $post_id, $perform_sync = true, $force_sync = false, $comment_type ) {

@Joep_Kannegieter Esto tendrá algunas ventajas para tu caso (y algunos otros casos):

  • La visualización de comentarios funcionará
  • Controlarás el tipo de visualización de comentarios (es decir, todos los comentarios o enlace de comentarios) mediante programación
  • Controlarás la caché de comentarios mediante programación

Ver más

1 me gusta

¡Gracias! Voy a instalarlo y probarlo. Informaré los resultados.

Aún no está publicado. Espera hasta que veas la versión 2.4.6 del plugin lista para actualizar en tu panel de administración de WordPress (también te avisaré aquí).

Hola Angus:

Volviendo aquí; básicamente “lo hago funcionar”, aunque no con la plantilla de Bricks Builder.
Cuando cambio al tema twentytwenty, la integración de Discourse aparece debajo de la publicación del blog, reemplazando el campo de Comentarios.

Cuando se usa Bricks Builder, hay un elemento “Comentarios” que carga los comentarios de WP; que no es reemplazado por el plugin. Tampoco se llama programáticamente con:

Llamado programáticamente, lanza el error:

Error: Pocos argumentos para la función WPDiscourse\Utilities\Utilities::get_discourse_comments(), se pasó 1 y se esperaban exactamente 4 en /home/u43655p432443/domains/domain.nl/public_html/wp-content/themes/bricks/includes/elements/code.php(159) : eval()'d code on line 4

Así que está relacionado con Bricks. Voy a preguntar también a la comunidad de Bricks.

Joep

Por ahora, solo uso PHP para llamar a los comentarios en la plantilla, usando

<?php comments_template(); ?>

Lo que omite el elemento de comentarios de Bricks y usa el núcleo de WP; eso funciona.

Joep

Este error te está diciendo que tu uso de la función de utilidad get_discourse_comments necesita ser actualizado. Aquí tienes un ejemplo de cómo podrías usarla.

global $post;
use WPDiscourse\Utilities\Utilities as DiscourseUtilities;
$discourse_comments = DiscourseUtilities::get_discourse_comments($post->ID, true, true, 'display-comments');
echo $discourse_comments;