Plugin tenta republicar no Discourse após cada atualização

Olá,
Notei um problema em nosso site com o plugin WP Discourse.
Basicamente, depois que publicamos um post no blog e ele é publicado com sucesso no fórum Discourse, após, digamos, 1 semana, se fizermos uma pequena alteração no post e o atualizarmos, o plugin WP Discourse tenta publicá-lo novamente no fórum.
Recebo então um e-mail “Falha na Publicação do Discourse” dizendo que a URL incorporada já foi utilizada.

Notei isso também ao atualizar posts muito antigos no WordPress, eles aparecem na categoria padrão “Notícias” do fórum Discourse, confundindo os leitores.

Existe alguma configuração que estou perdendo para evitar isso?
Muito obrigado!

Obrigado pelo relatório. Darei uma olhada mais de perto neste cenário em breve, espero que amanhã, e no máximo no início da próxima semana.

2 curtidas

Olá @npm0912, você poderia fazer um teste para mim?

Você poderia tentar recriar este problema, mas antes de fazer a alteração (depois de uma semana, ou o que quer que seja o lapso de tempo normal), por favor, verifique o status da postagem do Discourse na barra de utilitários do WordPress no lado direito da tela de edição da postagem. Diga-me o que é mostrado lá no momento em que você está fazendo a edição e, em seguida, se você obtém o comportamento que acabou de descrever após a edição.

Por favor, compartilhe também comigo um download dos seus logs do WP Discourse.

quando tento editar uma postagem publicada há cerca de 10 dias, vejo este status de postagem do Discourse:

Tentei atualizar a postagem e o mesmo erro aconteceu. Também recebi o mesmo e-mail sobre a falha.
O último erro nos logs é:

[2024-05-13 18:02:53] publish.ERROR: create_post.post_error {"wp_title":"Nextcloud exhibiting at global events in May 2024","wp_author_id":"9","wp_post_id":209030,"response_message":"Embed url has already been taken","http_code":422}

Não deveria haver uma opção na página de Configurações que desabilite a tentativa de republicação quando a postagem já está no Discourse?

Obrigado!

Ok, isso significa que sua instância do WordPress não está permitindo que o plugin WP Discourse salve os campos de metadados de postagem corretamente, muito provavelmente devido a outro plugin ou tema em seu site. Você poderia compartilhar o download do log do WP Discourse? Isso incluirá uma lista de plugins que podem sugerir um culpado.

Normalmente, o que acontece é que o plugin salva os detalhes da publicação após a primeira publicação. Isso não está acontecendo em seu site. É isso que precisamos descobrir :slight_smile:

Ok, entendi, isso é estranho… Pensei que fosse um bug. Estou anexando o arquivo de metadados. Me diga se isso é suficiente

wp-discourse-logs-metafile-2024-04-17-2024-05-13.txt (2,5 KB)

Me diga se existe algum plugin conhecido que possa interferir com o plugin Discourse.

Muito obrigado por dedicar tempo para investigar isso!

Você tem alguns plugins que podem ser os culpados. Como primeira medida, você poderia ativar esta configuração nas configurações de “Publicação” do WP Discourse.

Isso muda a forma como o plugin salva campos personalizados e pode afetar o comportamento no seu caso. Provavelmente não resolverá o problema, mas pode nos dar mais informações. Depois de ativá-lo, tente recriar as mesmas circunstâncias.

Depois que tentarmos isso, passaremos a desativar plugins individuais para ver se conseguimos isolar o problema. Você tem um site de staging por acaso (ou seja, um site com seus temas e plugins, mas sem dados reais)?

Também adicionarei mais logs à lógica de publicação no plugin para ajudar a esclarecer essa classe de problema (ou seja, o armazenamento de metadados no WordPress após a publicação no Discourse). Isso levará um tempo, mas podemos realizar alguns testes como os acima nesse ínterim.

Olá e obrigado novamente pelo seu tempo!

Ativei essa configuração, mas o problema ainda persiste.
Na verdade, usamos um site de staging e o engraçado é que, mesmo que os plugins, temas e arquivos sejam exatamente os mesmos, ele se comporta de maneira diferente - ou seja, depois que publico um post de teste, ele vai para o Discourse corretamente e, em seguida, se volto ao mesmo post, não vejo o erro “Embed url has already been taken” nas configurações da barra lateral do Discourse. Em vez disso, vejo assim:

As diferenças de servidor são:
Site de Staging:
WordPress - 6.5.3
PHP - 8.1.27
MySQL - 10.6.16

Site em Produção:
WordPress - 6.5.3
PHP - 8.1.2-1ubuntu2.17
MySQL - 5.5.5

Olá @npm0912, isso demonstra que o problema está relacionado ao seu ambiente.

  1. Você poderia compartilhar o arquivo “meta” completo do visualizador de logs do WP Discourse de ambas as instâncias?
  2. Quais são as diferenças entre o Discourse que você está usando com o staging e o que você está usando em produção?
  3. Você usa alguma solução de cache, CDN ou balanceamento de carga no WordPress de produção que não usa no staging?

Olá @angus,

  1. Claro, aqui estão os logs:
    Staging:
    Staging wp-discourse-logs-metafile-2023-04-13-2024-05-28.txt (2,4 KB)
    Site principal:
    LIVE wp-discourse-logs-metafile-2024-05-13-2024-05-28.txt (2,4 KB)

  2. a instância do Discourse é a mesma, a única diferença é que, do staging, estou postando em outra categoria de fórum.

  3. Eu uso WP Rocket e cache Redis em ambas as instâncias, então acho que isso não estaria afetando.

Obrigado!

Existem algumas pequenas diferenças entre os dois. Provavelmente não são a causa, mas vale a pena manter seus sites de staging e produção idênticos, para eliminar a possibilidade de que isso seja a causa, tanto aqui quanto para outros problemas.

Fora isso, recomendo que você verifique atentamente suas configurações do WP Rocket (por exemplo, elas são realmente as mesmas entre seus dois sites). Embora funcione bem para seus propósitos específicos, o WP Rocket é frequentemente a causa de problemas com plugins do WordPress.

Observe que o WordPress atualmente requer o MySQL versão 8.0 ou posterior. Você precisa atualizar seu banco de dados de produção.

Referência cruzada: Could not update the meta value of discourse_post_id in database - #2 by angus

Na verdade, o WP Discourse obteve informações incorretas sobre o banco de dados. A versão correta do banco de dados é 10.6.16-MariaDB-0ubuntu0.22.04.1.

A versão impressa nesse arquivo é a saída de uma função principal do Wordpress:

$wpdb->db_version()

Veja aqui no código, e veja mais adiante

Essa é a versão que o Wordpress acha que está usando. Parece ser esse o seu problema.

você está certo. Verifiquei novamente a função db_version() dentro do tema e, de fato, obtive 5.5.5 como resultado. Mas na página de “Saúde do site” no backend, vejo a versão 10.6.16-MariaDB - a mesma versão que os administradores do sistema mencionaram a mim… Quero dizer, essa também deveria ser a versão que o WP vê, certo?

Desculpe, mas pode haver uma série de problemas ocorrendo aqui e não é realmente possível dizer com confiança sem examinar seu servidor.

Considerando os problemas que você relatou, sugiro investigar esse ângulo minuciosamente.