Mensagem de erro "embed url já está em uso" mesmo após desvincular o post do Discourse

Tenho um post existente no WordPress que também era publicado no fórum.
Em certo ponto, toda vez que atualizo o post clicando no link salvar, recebo um e-mail com a seguinte mensagem de erro:

Falha na Publicação no Discourse

Um post falhou ao ser publicado no Discourse a partir do seu site ...

...

Motivo da falha:
Uma resposta inválida foi retornada pelo Discourse.
Embed url wird bereits verwendet (traduzido como "já está sendo utilizado")

Desvinculei o post do Discourse. Também excluí o post no fórum. No entanto, o erro continua aparecendo a cada salvamento do post. Além disso, ao tentar publicar o post como um novo tópico, o mesmo erro surge.

1 curtida

Havia um bug no plugin que fazia com que ele tentasse republicar posts no Discourse após serem desvinculados no WordPress, quando a configuração de Publicação Automática está ativada e os posts são publicados com o Editor de Blocos. A publicação do post no Discourse falhava porque a URL de incorporação já estava sendo usada no Discourse. Corrigi esse problema ontem, mas a correção só se aplica a posts recém-desvinculados. Vou desenvolver uma solução para corrigir o problema em posts que foram desvinculados anteriormente.

Quando os posts são desvinculados, o plugin não está removendo o embed_url do tópico no Discourse. Isso significa que, se um post for desvinculado e depois republicado no Discourse, a publicação falhará com o erro “Embed url is already being used”. Vou corrigir isso.

Se você excluiu o tópico associado no Discourse, deve ser possível republicar o post no Discourse sem erros. Vou verificar se o embed_url é removido no Discourse quando um tópico é excluído.

Vou atualizar o plugin no final desta semana ou em algum momento durante o fim de semana. Essa atualização deve resolver os problemas que você está enfrentando com posts desvinculados.

2 curtidas

Obrigado pela resposta detalhada! Existe alguma solução manual por enquanto?

Para evitar que a mensagem de erro apareça quando uma postagem que você desvinculou do Discourse for atualizada no WordPress, adicione um campo personalizado à postagem com o nome wpdc_auto_publish_overridden e defina seu valor como 1.

Se os campos personalizados ainda não estiverem habilitados no Editor de Blocos:

  1. Clique nas configurações do editor de blocos (três pontos) no canto superior direito da página e selecione “Opções”.
  2. Selecione “Campos personalizados” na seção “Painéis Avançados”.
1 curtida

Acabei de publicar a versão 2.0.4 do WP Discourse no repositório do WordPress. Ela resolverá o problema com posts que foram desvinculados do Discourse quando o site estava usando uma versão do plugin inferior a 2.0.3. Para esses posts, na primeira vez que você atualizar o post desvinculado, verá a mensagem de erro Embed url has already been taken. Após a atualização inicial, você não verá mais a mensagem de erro (nem receberá o e-mail de erro de publicação). Não é uma solução perfeita, mas é a melhor maneira de resolver esse problema.

Se você tentar publicar um post no Discourse quando já houver um tópico no Discourse usando sua URL de incorporação, receberá um erro. Se você excluir o tópico no Discourse que está usando a URL de incorporação, deverá conseguir republicar o tópico. O Discourse leva algum tempo para excluir o Embed de Tópico associado ao post do WordPress. Ainda preciso confirmar o que define esse período de tempo. Avise-me se você ainda estiver tendo problemas com isso.

Idealmente, quando um post do WordPress é desvinculado de um tópico do Discourse, a embed_url associada ao post seria excluída no Discourse. Infelizmente, atualmente não é possível remover a embed_url de um tópico por meio da API do Discourse. Pode ser possível fazer isso funcionar no futuro. Uma mudança menor que seria útil para o plugin WP Discourse seria fazer com que o Discourse retornasse o topic_id ao retornar a mensagem de erro Embed url has already been taken. Dessa forma, o plugin WP Discourse poderia informar aos usuários qual tópico no Discourse está causando o problema.

1 curtida