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
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;
?>
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,
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.
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.
Ok. Provavelmente há algum problema de prioridade de carregamento com o construtor de modelos que você está usando aqui. Tentarei recriá-lo amanhã. Aguarde.
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
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).
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:
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.
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;