Configurar WP Discourse para exibir comentários do Discourse

Você pode usar o Discourse como um sistema de comentários para o WordPress. As funcionalidades de comentários dependem das funcionalidades de publicação, portanto, você precisa configurar a publicação para que os comentários funcionem. Se você configurou a publicação e está pronto para configurar os comentários, assista a este vídeo curto ou siga as instruções abaixo.

Próximo Passo

Depois de configurar os comentários, você pode querer verificar os seguintes tópicos:


Instruções

Configurando Comentários

Para que os comentários do Discourse apareçam em seu site WordPress, você deve selecionar a configuração Habilitar Comentários do Discourse. Quando habilitado, você verá duas opções. A opção Exibir comentários carregará um modelo de comentários para cada postagem do WordPress que foi publicada no Discourse. Este modelo exibirá os comentários do Discourse abaixo das postagens do WordPress. A opção Exibir um link para os comentários carregará um modelo de comentários que exibe um link para o tópico associado do Discourse abaixo das postagens publicadas. O número de respostas ao tópico será exibido no link, mas nenhuma resposta será exibida no WordPress.

Ambas essas opções de comentários funcionam carregando modelos de comentários para as postagens do WordPress. Isso significa que elas só funcionarão se os comentários estiverem habilitados para a postagem. Se você deseja habilitar comentários para todas as postagens, mas não deseja que nenhum comentário histórico do WordPress seja exibido para postagens que não foram publicadas no Discourse, habilite a configuração Remover Modelo de Comentários do WordPress.

Configurações

Aqui estão algumas descrições curtas sobre o que as outras configurações de comentários fazem. Se você ainda tiver dúvidas sobre alguma das configurações, responda a este tópico e peça mais esclarecimentos.

Carregar Comentários com Ajax

Esta configuração é usada para carregar comentários do cliente WordPress, em vez de carregá-los do servidor. Isso é útil se o cache de página estiver impedindo que comentários recentes sejam carregados em seu site.

Carregar CSS de Comentários

Esta configuração carrega uma folha de estilo que corrige problemas com oneboxes e citações do Discourse quando eles são exibidos no WordPress.

Mostrar Comentários Existentes do WP

Selecione esta configuração para também mostrar os comentários existentes do WordPress para postagens que também foram publicadas no Discourse, selecione a configuração.

Título de Comentários Existentes

Se você estiver exibindo comentários existentes, esta configuração adicionará um título acima dos comentários do WordPress.

Configurações de Importação Seletiva

Existem várias configurações que permitem importar comentários seletivamente. Estas devem ser autoexplicativas. Os valores padrão para cada uma delas são um bom ponto de partida, portanto, altere-as apenas se tiver um motivo para isso.

  • Máximo de Comentários Visíveis
  • Número Mínimo de Respostas
  • Pontuação Mínima de Postagens
  • Nível Mínimo de Confiança
  • Ignorar Pontuação de Nível de Confiança
  • Importar Apenas Curtidos por Moderador
Formato Personalizado de Data/Hora

Esta configuração formata a data que é exibida para cada comentário do Discourse que aparece em seu site WordPress. Comece com o valor padrão. Se você achar que deseja alterar o formato da data, clique no link na descrição da configuração para obter detalhes sobre como fazer isso.

Cache de HTML de Comentários

Esta configuração pode ser usada para melhorar o desempenho. O cache do HTML de Comentários reduz o número de requisições feitas ao Discourse. Sua configuração associada Limpar Cache de HTML de Comentários deve ser autoexplicativa.

Logs Detalhados de Comentários

Habilitar isso registrará todas as recuperações bem-sucedidas de comentários do Discourse, além de erros (o padrão).

Webhook de Sincronização de Dados de Comentários

Habilitar o webhook de Sincronização de Dados de Comentários no painel de configurações “Webhooks” pode reduzir significativamente o número de requisições de API feitas do WordPress para o Discourse. Antes de habilitar o webhook:

  1. visite o URL do Discourse fornecido na descrição da configuração (http://forum.example.com/admin/api/web_hooks.)

  2. Clique no botão ‘Novo Webhook’ e preencha o formulário

    • No campo URL de Carga Útil, insira o URL fornecido na descrição do campo Sync Comment Data do WP Discourse. Será algo como isto, exceto usando o URL do seu site WordPress: https://wp-discourse.dev/wp-json/wp-discourse/v1/update-topic-content.

    • Certifique-se de que o campo Tipo de Conteúdo esteja definido como application/json.

    • Na entrada Secreto, insira uma string de texto com pelo menos 12 caracteres. Em seguida, copie essa mesma chave para a configuração Webhook Secret Key do WP Discourse.

    • Na caixa ‘Quais eventos devem acionar este webhook?’, certifique-se de que ‘Evento de Postagem’ esteja selecionado.

    • Use o campo Categorias Acionadas se você publica postagens do WordPress apenas em categorias específicas. Dessa forma, seu site WordPress não precisará processar requisições de webhook para tópicos que não têm uma postagem associada do Discourse.

    • Deixe a configuração Verificar certificado TLS do URL de carga útil habilitada.

    Finalmente, habilite a caixa de seleção ‘Ativo’ e clique em criar. Quando o webhook for salvo, clique no botão Ir para eventos.

  3. De volta ao WordPress, certifique-se de ter inserido o segredo do webhook do Discourse no campo Webhook Secret Key e habilite a configuração de webhook Sync Comment Data. Em seguida, salve as opções.

O webhook do Discourse agora deve estar funcionando. Você deve verificá-lo clicando no botão Ping do webhook no Discourse (encontrado em /admin/api/web_hooks/:webhook_id/events). Certifique-se de que o ping do webhook esteja retornando um código de status de 200.

Ajustando o período de sincronização comments_number para páginas de arquivo do WordPress

Para obter o número correto de comentários do Discourse para uma postagem, o plugin precisa fazer periodicamente uma requisição HTTP ao Discourse para obter o número atual de comentários. Em páginas individuais, esse período é definido para não ser mais frequente do que a cada 10 minutos. Para páginas de arquivo, o período é definido para não ser mais frequente do que uma vez a cada 24 horas. A razão para isso é evitar fazer várias requisições ao Discourse toda vez que uma página de arquivo é acessada.

Se você ainda achar que o plugin está fazendo muitas requisições ao Discourse ao exibir as páginas de arquivo do seu site, você pode ajustar o archive_page_sync_period conectando-se ao filtro 'discourse_archive_page_sync_period'. Você faz isso adicionando algo como isto ao arquivo functions.php do seu tema:

add_filter( 'discourse_archive_page_sync_period', 'my_namespace_archive_page_sync_period' );
function my_namespace_archive_page_sync_period( $sync_period ) {
  // Isso mudará o período de sincronização para posts arquivados para uma vez por semana.
  return WEEK_IN_SECONDS;
}

Se você achar que o plugin não está fazendo requisições suficientes ao Discourse para recuperar os números de comentários atuais para páginas de arquivo, você pode adicionar algo como isto ao arquivo functions.php do seu tema. Isso definirá o archive_page_sync_period para 10 minutos.
Nota: em um site movimentado, isso pode sobrecarregar seu servidor.

add_filter( 'discourse_archive_page_sync_period', 'my_namespace_archive_page_sync_period' );
function my_namespace_archive_page_sync_period( $sync_period ) {
  // Isso mudará o período de sincronização para posts arquivados para uma vez por semana.
  return 10 * MINUTE_IN_SECONDS;
}

Exibir comentários sem carregar o modelo de comentários do WordPress

O plugin WP Discourse usa o modelo de comentários do WordPress para carregar os comentários do Discourse. Se o seu tema não estiver carregando o modelo de comentários, você pode exibir os comentários com a função auxiliar estática get_discourse_comments. Essa função exige que você forneça o ID da postagem do WordPress para a qual deseja exibir os comentários. Aqui está um exemplo simples de seu uso:

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

Os comentários serão exibidos da mesma forma que são exibidos se você selecionar a opção Habilitar Comentários do Discourse/Exibir Comentários (encontrada na aba Configurações de Comentários do plugin). Quando esta função é usada, o valor dessa configuração é ignorado, mas todas as outras configurações de Comentários são respeitadas.

Solução de Problemas

O problema mais comum com os comentários do Discourse é que eles podem não aparecer instantaneamente após a postagem ser feita no Discourse. Esse atraso é intencional, pois o plugin tenta reduzir o número de requisições que precisa fazer ao Discourse. Fazer uma requisição toda vez que a página é carregada deixará seu site lento. Se você não estiver vendo os comentários aparecerem instantaneamente, espere 10 minutos antes de atualizar a página novamente.

Problemas com o número de comentários ao exibir comentários do Discourse e do WordPress

O plugin wp-discourse usa o hook de filtro get_comments_number do WordPress para que o número de comentários do Discourse que foram criados para uma postagem possa ser exibido em todo o seu tema. Isso cria um conflito quando comentários do Discourse e do WordPress estão sendo exibidos para uma postagem. O plugin é capaz de resolver esse conflito na maioria dos lugares. Um lugar onde ele não pode ser resolvido é no título do comentário que os temas do WordPress frequentemente exibem no cabeçalho da seção de comentários. Esta é a seção que começa com algo como “2 pensamentos sobre…”.

A maneira mais fácil de fazer isso é adicionar uma regra ao arquivo css do seu tema.

.discourse-comments-area ~ .comments-area .comments-title  {
	display: none;
}
7 curtidas

@angus ótimo guia e vídeo, obrigado por montá-lo. Implementamos o plugin e estamos travados na funcionalidade de comentários. Temos duas perguntas/problemas aqui:

  • Quando postamos uma resposta no Discourse (para a postagem compartilhada do WordPress), vemos a contagem de respostas mudar no WordPress, mas não vemos nenhum comentário aparecer.
  • Gostaríamos de desativar os comentários do WordPress para que os usuários só possam responder via Discourse, isso é possível?

Aqui está o que vemos, este ‘1’ de resposta é do Discourse, e você notará que a resposta em si não está visível:

CC: @Abdelrahman_MoHamed

Olá @Jacob_Peebles,

Assumindo que você seguiu o guia acima, a próxima coisa a verificar é o seu tema. Você está usando um Tema de Bloco (Block Theme)? Se sim, veja:

Sim, basta desativar os comentários no WordPress.

  1. Selecione Configurações > Discussão no painel.
  2. Desmarque a caixa ao lado de Permitir que as pessoas postem comentários em novos artigos.
  3. Clique em Salvar alterações.
1 curtida

@angus - ótimo, funcionou perfeitamente! Sim, aparentemente estamos no editor de ‘blocos’. Você pode ver as coisas funcionando aqui:

A única parte estranha é que os estilos/fontes não parecem ser aplicados aos comentários do discourse. Não tenho certeza se isso é apenas um problema com nosso tema ou algo que vale a pena observar.

Obrigado novamente.

Desculpe, aqui está uma captura de tela também.

Fico feliz que esteja funcionando para você, Jacob.

Você precisará adicionar sua própria estilização de comentários. Os comentários do Discourse são intencionalmente muito levemente estilizados, pois cada tema tem sua própria abordagem de estilização. No seu caso, alguns estilos básicos como este devem resolver o problema

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 curtida

Excelente @angus

Olá @angus

Obrigado pelo ótimo plugin e pelas instruções úteis!

Integrei o Discourse ao meu site Wordpress e ele está conectado.
Consegui criar uma publicação no site WP e vi que ela foi puxada como um novo Tópico no Discourse, o que é ótimo!

No entanto, ele continua exibindo apenas o conteúdo inicial da publicação como um excerto (hello world etc) no Discourse, e não atualiza o conteúdo do tópico do Discourse depois de alterá-lo na publicação do WP. Ele só reflete a mudança no conteúdo se você clicar em ‘Mostrar Publicação Completa’, o que significa que não consigo alterar a configuração para mostrar o conteúdo completo da publicação e não apenas o excerto. Quando faço isso, o botão simplesmente desaparece do tópico do Discourse e mostra apenas o conteúdo inicial antes de ser atualizado. Não sei se estou me fazendo entender?

E também, quaisquer comentários postados do Discourse como respostas ao tópico não aparecem sob a publicação no WP. Habilitei os comentários e estou usando o tema Astra, então não é um editor de blocos. Não tenho certeza do que devo fazer para corrigir isso.

Qualquer conselho sobre esses 2 pontos seria muito apreciado, obrigado!

Olá @Clo, obrigado por experimentar o plugin. Você poderia esclarecer qual seria o seu estado ideal para publicação? Tente descrever como uma “história de usuário”. Quanto aos comentários, o comentário do WordPress está ativado no seu site?

Olá @angus

Parece que os comentários finalmente foram transferidos do site Discourse para o site WP, demorou um pouco. Obrigado!

No entanto, eu também queria perguntar se é possível que o plugin crie uma nova postagem no WP sempre que um novo tópico for criado no Discourse? Ou isso só é possível no sentido inverso?

Só é possível fazer isso com plugins personalizados adicionais em ambos os lados, Wordpress e Discourse. O plugin WP Discourse em si não foi projetado para isso.

Muito obrigado, isso é útil.
Ótimo plugin!

1 curtida