Estamos usando o Discourse em vez de comentários do WordPress (a opção ‘Remover Modelo de Comentários do WordPress’ está marcada, assim como o Ajax). Tenho o controle de acesso do Toolset configurado em um tipo de post personalizado que está sendo postado no Discourse (em uma categoria privada que corresponde ao controle de acesso). Normalmente, esse tipo de controle também afetaria a visibilidade dos comentários do post, mas não está afetando a exibição dos comentários do Discourse. Alguma ideia?
Talvez eu possa adicionar um pouco mais de contexto aqui:
Temos um tipo de post personalizado privado no nosso site WordPress, cujos posts devem ser conectados a tópicos em uma categoria privada do Discourse. Os mesmos usuários que têm acesso à categoria do Discourse também têm acesso ao post no WordPress. Estamos lidando com isso atribuindo esses usuários ao papel de Editor no WordPress, enquanto no Discourse eles pertencem a um grupo que lhes dá acesso à categoria privada.
Em nenhum caso usuários não autenticados devem ver os posts no WordPress ou os tópicos de discussão no Discourse. Isso está funcionando conforme o esperado por meio dos controles de acesso por papel e grupo, respectivamente. No lado do WordPress, como mencionado acima, estamos usando o Toolset Access para restringir o acesso a todos os posts desse tipo de post personalizado.
No entanto, os threads de discussão privados do Discourse estão sendo exibidos ao público via incorporação no WordPress, mesmo que o conteúdo do post em si esteja oculto. Em outras palavras, os comentários incorporados do Discourse não estão sendo ocultados pelo controle de acesso. Estamos tentando descobrir o que pode estar colocando essa saída fora do loop de controle e como corrigir isso.
O plugin WP Discourse exibe comentários carregando um modelo de comentários personalizado. Ele utiliza o filtro comments_template do WordPress para carregar esse modelo. Não tenho certeza do motivo pelo qual os comentários ainda estão sendo carregados quando o Toolset Access Control está configurado para um tipo de post. Vou investigar o que está acontecendo com isso.
Acredito que o plugin deveria adicionar uma opção para não carregar comentários em posts que foram publicados em uma categoria privada do Discourse. Quando ativada, apenas um link para o tópico do Discourse seria exibido. No entanto, não tenho certeza se isso resolveria o problema que você está enfrentando.
Olá Simon, estou trabalhando nisso com a @Kayla. O que você descreve aqui resolveria nosso problema.
Ainda assim, seria bom saber também como incluir o template de comentários do Discourse dentro do nosso controle de acesso mais granular. Obrigado!
Ótimo! Não acho que haverá problema em incluir isso na próxima atualização do plugin. Vou tentar concluir isso até o final da semana. Manterei você informado sobre o progresso.
Acho que o problema que você está enfrentando está relacionado à prioridade com que o WP Discourse se conecta ao hook de filtro comments_template do WordPress. O plugin WP Discourse está usando uma prioridade de 20 para chamar a função que se conecta a esse filtro. O plugin Toolset provavelmente está se conectando a esse filtro com uma prioridade menor para impedir que o modelo de comentários seja carregado para páginas protegidas.
Entrei em contato com o Toolset sobre isso e estava enganado quanto ao comportamento esperado. O plugin Toolset Access não se conecta ao modelo de comentários de forma alguma. Ocultar comentários em conteúdo restrito requer código personalizado para se conectar ao filtro toolset_access_api_get_post_permissions deles, a fim de suprimir/permitir a renderização do modelo de comentários no nível do tema. Peço desculpas por não ter percebido que a restrição de conteúdo deles é literalmente sobre o próprio modelo de conteúdo. ![]()
Essa opção foi adicionada ao plugin na versão 2.0.7. Ela já está disponível no repositório do WordPress.
Ao selecionar a opção “Habilitar comentários do Discourse” do plugin, agora você verá três opções para tipos de comentários:
Selecione a opção “Exibir comentários para tópicos públicos” para que os comentários sejam exibidos apenas para tópicos que estejam em categorias públicas do Discourse. Se um tópico for publicado em uma categoria privada, será exibido um link para o tópico e seu número de comentários.
Se um tópico publicado do WordPress para o Discourse for movido de uma categoria pública para uma privada no Discourse, os comentários serão removidos do WordPress e substituídos por um link. Essa alteração pode levar até 10 minutos para ocorrer, pois o plugin WP Discourse armazena em cache os dados de comentários retornados pelo Discourse. Você pode invalidar o cache de categorias imediatamente selecionando a opção “Forçar atualização de categorias” na página de Configurações de Publicação do plugin e salvando essa página de configurações.
Para permitir que o plugin acesse as permissões de categorias para subcategorias do Discourse, você precisa selecionar a opção “Exibir subcategorias” na aba de Configurações de Publicação do plugin. Se essa opção não estiver habilitada e a opção “Exibir comentários para tópicos públicos” estiver ativada, todas as subcategorias do Discourse serão consideradas privadas, e um link será exibido em vez dos comentários.
Nota: a capacidade do plugin de reconhecer alterações de categoria feitas diretamente no Discourse está disponível apenas se seu site estiver em uma versão recente do Discourse.
Para controlar programáticamente quais usuários terão comentários do Discourse exibidos para eles, você pode contornar completamente o carregamento dos comentários do WP Discourse para um usuário usando o hook de filtro wpdc_load_comments_template_for_user. Esse hook recebe três argumentos: $load_template (padrão é true), $current_user e $post_id. Retorne false de uma função que se conecte ao filtro para impedir que os comentários sejam carregados para um usuário específico.
As mudanças que estou observando com esta atualização são que, embora discourse_replies_html carregue e se apresente conforme o esperado, parece estar falhando ao carregar discourse_no_replies_html (estou vendo o link de texto “Join Discussion Link: no Comments”, mas não nosso modelo). Além disso, se o post não foi publicado no Discourse, uma nova mensagem está aparecendo: “Comments are not currently available for this post.” Todos esses são posts públicos em categorias públicas do Discourse.
Para posts publicados em categorias privadas do Discourse, parece estar carregando o formulário padrão de comentários do WP. Não há link para o tópico do Discourse.
A opção “Display comments for public topics” está definida, assim como “Display Subcategories”. Atualizei o “Clear Cached Comment HTML + Force Category Update”. Estou deixando passar algo?
Obrigado por relatar isso! O problema deve ter sido corrigido na versão 2.0.8 do WP Discourse.
Vou fazer algumas alterações no plugin ainda hoje ou amanhã que devem resolver os outros problemas que você relatou. A falha ao carregar o modelo de comentários do WordPress para posts que não foram publicados no Discourse precisava ser corrigida imediatamente.
É isso que estou vendo ao selecionar a opção “Exibir comentários para tópicos públicos” e a opção “Mostrar Comentários WP Existentes”, e então publicar um post com WordPress existente:
Do ponto de vista do usuário, isso não parece muito claro (isso poderia ser resolvido com alguma personalização do WordPress), mas o link para os comentários do Discourse existe.
Se você ativou a configuração do site “Cache Comment HTML”, tente desativá-la. Essa configuração não deveria causar problemas, mas desmarcá-la simplificará a depuração disso.
Envie-me mais detalhes que você tiver sobre o problema. Vou lançar uma pequena atualização no repositório do WordPress mais tarde hoje para corrigir um problema com o botão “Unlink Topic” que está ocorrendo com o lançamento do WordPress 5.5.
Estamos na versão 2.1.1 com o WP 5.5. O cache de comentários não está ativado e não estamos usando os comentários nativos do WP (agora, felizmente, o formulário padrão não está mais sendo carregado).
No entanto, às vezes os modelos personalizados são carregados e, às vezes, não. Revertimos para mostrar comentários em todos os posts, independentemente de o tópico do Discourse ser privado ou não, mas isso não ajudou. Não consigo entender o motivo, mas o problema parece persistente para posts individuais. Exemplos de posts públicos em tópicos públicos:
sem comentários, não está carregando discourse_no_replies_html:
sem comentários, está carregando discourse_no_replies_html:
tem comentários, não está carregando discourse_replies_html:
tem comentários, está carregando discourse_replies_html:
É possível que o problema esteja relacionado aos modelos personalizados, mas há outro relatório de um problema em que o modelo de comentário não carrega e o link do comentário é exibido em seu lugar. Não consigo reproduzir o problema no meu site de desenvolvimento, mas vou fazer uma pequena alteração no plugin que deve resolver o problema. Teremos isso pronto no início de amanhã. Obrigado pela sua paciência com isso!
Você pode tentar atualizar o plugin para a versão 2.1.2 e me dizer se isso resolve o problema?
Posso confirmar que a atualização para a versão 2.1.2 resolveu o problema de carregamento do template para nós. Obrigado!

