Link do WP para o Discourse não aparece ao usar código personalizado

Olá,

Tenho um problema em que, no lado do WP, não há link disponível para o fórum Discourse. Apenas algumas respostas em tópicos de fórum que encontrei sobre isso:

  • Todos os campos ‘Conteúdo de Texto’ estão preenchidos no admin do WP → seção Plugin.
  • A sincronização é executada; posso ver os comentários em ambos os lados.
  • A string de URL está disponível na tabela do banco de dados _postmeta

image

A seção de comentários me mostra Avisos:

**Aviso**: Tentando acessar o deslocamento da matriz em um valor do tipo null em **/home/u48255p44743/domains/fxweb.snowfreakz.nl/public_html/wp-content/plugins/wp-discourse/lib/discourse-comment-formatter.php** na linha **90**
**Aviso**: Tentando acessar o deslocamento da matriz em um valor do tipo null em **/home/u48255p44743/domains/fxweb.snowfreakz.nl/public_html/wp-content/plugins/wp-discourse/lib/discourse-comment-formatter.php** na linha **106**
**Aviso**: Tentando acessar o deslocamento da matriz em um valor do tipo null em **/home/u48255p44743/domains/fxweb.snowfreakz.nl/public_html/wp-content/plugins/wp-discourse/lib/discourse-comment-formatter.php** na linha **127**
**Aviso**: Tentando acessar o deslocamento da matriz em um valor do tipo null em **/home/u48255p44743/domains/fxweb.snowfreakz.nl/public_html/wp-content/plugins/wp-discourse/lib/discourse-comment-formatter.php** na linha **127**
**Aviso**: Tentando acessar o deslocamento da matriz em um valor do tipo null em **/home/u48255p44743/domains/fxweb.snowfreakz.nl/public_html/wp-content/plugins/wp-discourse/lib/discourse-comment-formatter.php** na linha **148**
**Aviso**: Tentando acessar o deslocamento da matriz em um valor do tipo null em **/home/u48255p44743/domains/fxweb.snowfreakz.nl/public_html/wp-content/plugins/wp-discourse/lib/discourse-comment-formatter.php** na linha **148**

Todos estão relacionados à $URL no arquivo. Estou chamando os comentários com:

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

Exemplos de URLs:
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 );

Colocar a chamada direta acima não me retorna nenhum conteúdo como link (encontrei em outro tópico)

Executando Apache / PHP7.4 / WP 6.0.2
Após algumas horas de solução de problemas, estou sem opções. Talvez alguém tenha uma ideia!?
Obrigado antecipadamente,

Joep

Olá Joep,

Se ambas as coisas forem verdadeiras, então há algum outro problema (não WP Discourse) com o seu site.

Isso começou recentemente? O que mais mudou na sua instalação do WP recentemente? Outros plugins, temas, cache, etc.

Olá Angus,

Obrigado por entrar em contato… é uma instalação “nova” do Wordpress rodando o construtor de templates Bricks e acabei de instalar o WPdiscourse para a conexão. Além do cache do servidor mod_headers, não há outros plugins agressivos alterando nenhum script.

Acabei de adicionar a linha PHP direta novamente e… magicamente o URL está lá. Não faço ideia do que fiz de 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 );
?>

Mas ainda tenho os Avisos que se relacionam com as linhas de código onde o URL deveria ser construído e o link após “Continuar a discussão em” não está aparecendo.

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

Joep

Ok. Por que você está carregando os comentários e o permalink usando seu próprio código personalizado? O plugin cuida disso para você.

Olá,

Quando incluo os comentários “main” do WordPress (que é um elemento de template do Bricks), ele mostra o “formulário de comentários normal do WP”, que não é substituído pelo plugin de avaliações do Discourse. Veja o URL acima; alterei o layout adicionando os comentários do WP abaixo do Blog.

Configurações do Backend

Portanto, adicionei o código manualmente, pois isso mostrou as avaliações e provavelmente substitui quaisquer incompatibilidades do Bricks builder.

Joep

1 curtida

Ok. Provavelmente há algum problema de prioridade de carregamento com o construtor de modelos que você está usando aqui. Tentarei recriá-lo amanhã. Aguarde.

Posso te enviar o template builder como referência?

Haverá várias atualizações para a função de utilidade get_discourse_comments na próxima versão (2.4.6), que está atualmente em preparação para lançamento. A assinatura do método de utilidade atualizada ficará assim

/**
* Obtém o HTML do comentário do Discourse para que ele possa ser exibido sem carregar o template de comentários.
*
* @param int $post_id O ID da postagem para exibir os comentários.
* @param bool $perform_sync Determina se uma sincronização de comentários pode ser realizada ao carregar comentários.
* @param bool $force_sync Determina se o cache de sincronização de comentários é ignorado ao carregar comentários.
* @param string $comment_type Tipo de exibição do comentário.
*
* @return string
*/
public static function get_discourse_comments( $post_id, $perform_sync = true, $force_sync = false, $comment_type ) {

@Joep_Kannegieter Isso trará algumas vantagens para o seu caso (e alguns outros casos):

  • A exibição do comentário funcionará
  • Você controlará o tipo de exibição do comentário (ou seja, todos os comentários ou link do comentário) programaticamente
  • Você controlará o cache do comentário programaticamente

Veja mais em

1 curtida

Valeu! Vou instalar e tentar. Retornarei com os resultados.

Ainda não foi lançado. Aguarde até ver a versão 2.4.6 do plugin pronta para atualização no seu painel de administração do Wordpress (eu te avisarei aqui também).

Olá Angus,

Voltando aqui; basicamente “eu consigo fazer funcionar” embora não com o template do Bricks Builder.
Quando mudo para o tema twentytwenty, a integração do Discourse aparece abaixo da postagem do blog, substituindo o campo de Comentários

Ao usar o Bricks Builder, há um elemento “Comentários” que carrega os comentários do WP; que não é substituído pelo plugin. Nem chamado programaticamente com:

Chamado programaticamente, ele gera o erro:

Erro: Poucos argumentos para a função WPDiscourse\Utilities\Utilities::get_discourse_comments(), 1 passado em /home/u43655p432443/domains/domain.nl/public_html/wp-content/themes/bricks/includes/elements/code.php(159) : eval()'d code on line 4 e exatamente 4 esperados

Então, está relacionado ao Bricks. Vou perguntar à comunidade Bricks também.

Joep

Por enquanto, eu apenas uso PHP para chamar os comentários no template, usando

<?php comments_template(); ?>

Que pula o elemento de comentários do Bricks e usa o core do WP; isso funciona.

Joep

Este erro está informando que o uso da função de utilidade get_discourse_comments precisa ser atualizado. Aqui está um exemplo de como você poderia usá-la.

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