Estou trabalhando nisso agora. A primeira versão é para um site WordPress headless que usa o framework Remix para seu front-end. Assim que isso for feito, farei uma versão para sites WordPress regulares. Provavelmente será um plugin que estende o plugin WP Discourse. Espero que a maior parte do que estou fazendo no site WordPress headless possa ser transferida para sites WordPress regulares, mas pode exigir alguns compromissos.
Permitir que os usuários comentem diretamente de um site externo é trivial de implementar. O principal requisito é que o site externo tenha acesso às credenciais do usuário do Discourse. Isso pode ser feito usando o site externo como provedor do DiscourseConnect para o Discourse ou configurando o Discourse como um provedor do DiscourseConnect para o site externo.
No segundo cenário - onde o site externo não é o provedor do DiscourseConnect para o Discourse - na primeira vez que um usuário quiser comentar do site externo, ele precisará clicar em um link para conectar sua conta no site externo à sua conta do Discourse (ou para se registrar no Discourse se ainda não o fez). Pode ser bastante transparente do ponto de vista do usuário.
A mudança acima, no entanto, não faz com que tudo pareça um sistema de comentários regular. Uma expectativa normal para um sistema de comentários é que você possa ler e interagir com todos os comentários. O plugin WP Discourse exibe apenas uma seleção de comentários que são extraídos de uma rota especial fornecida pelo Discourse. Ele não fornece nenhuma funcionalidade para interagir com os comentários.
As partes difíceis do problema são:
- paginar todos os comentários de um tópico no WordPress, tendo em mente que pode haver milhares deles
- fornecer uma interface de usuário que dê ao usuário algum feedback sobre onde ele está em uma longa lista de comentários
- descobrir como exibir comentários que são respostas diretas a outros comentários. (A convenção do Discourse para isso está desalinhada com a forma como a maioria dos sistemas de comentários lida com respostas.)
- permitir que os usuários respondam diretamente a um comentário, gostem de um comentário, editem seus próprios comentários, etc.
- lidar com comentários que foram criados no Discourse e que podem conter conteúdo ou marcação que não podem ser facilmente renderizados ou interagidos no site externo. Por exemplo, oneboxes, enquetes…
- fornecer uma maneira de filtrar comentários por recentes, mais antigos, melhores, etc…
Tudo isso precisa ser realizado sem colocar uma carga excessiva no servidor do site externo, fazer muitas solicitações de API para o Discourse ou consumir muita memória no dispositivo do usuário (o objetivo é criar um sistema de comentários leve). É alcançável, mas não é algo que possa ser simplesmente inserido no código existente do WP Discourse sem fazer mudanças significativas nele.