Il plugin tenta di ripubblicare su Discourse dopo ogni aggiornamento

Ciao,
Ho notato un problema sul nostro sito web con il plugin WP Discourse.
In pratica, dopo aver pubblicato un post del blog che viene pubblicato con successo sul forum Discourse, dopo circa 1 settimana, se apportiamo una piccola modifica al post e lo aggiorniamo, il plugin WP Discourse tenta di pubblicarlo nuovamente sul forum.
Ricevo quindi un’email “Discourse Publishing Failure” che indica che l’URL incorporato è già stato utilizzato.

Ho notato questo anche quando aggiorno post molto vecchi in WordPress, vengono visualizzati nella categoria predefinita “News” del forum Discourse, confondendo i lettori.

C’è qualche impostazione che mi sfugge per evitare questo?
Grazie mille!

Grazie per il rapporto. Darò un’occhiata più da vicino a questo scenario presto, si spera domani, e al più tardi all’inizio della prossima settimana.

2 Mi Piace

Ciao @npm0912 potresti fare un test per me?

Potresti provare a ricreare questo problema, ma prima di apportare la modifica (dopo una settimana, o qualunque sia il normale lasso di tempo) controlla lo stato del post di Discourse nella barra di utilità di WordPress sulla destra nella schermata di modifica del post. Dimmi cosa viene mostrato lì al momento in cui stai apportando la modifica, e poi se ottieni il comportamento che hai appena descritto dopo la modifica.

Per favore, condividi anche con me un download dei tuoi log di WP Discourse.

Quindi, quando provo a modificare un post pubblicato circa 10 giorni fa, vedo questo stato del post di Discourse:

Ho provato ad aggiornare il post e si è verificato lo stesso errore. Ho anche ricevuto la stessa email sul fallimento.
L’ultimo errore dai log è:

[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}

Non dovrebbe esserci un’opzione nella pagina delle impostazioni che disabilita il tentativo di ripubblicazione quando il post è già su Discourse?

Grazie!

Ok, questo significa che la tua istanza di Wordpress non consente al plugin WP Discourse di salvare correttamente i campi meta dei post, molto probabilmente a causa di un altro plugin o tema sul tuo sito. Potresti condividere il download del log di WP Discourse? Includerà un elenco di plugin che potrebbero suggerire un colpevole.

Normalmente, il plugin salva i dettagli della pubblicazione dopo la prima pubblicazione. Questo non sta accadendo sul tuo sito. Questo è ciò che dobbiamo capire :slight_smile:

oh ok, che strano.. pensavo fosse un bug. Allego il file dei metadati. Fatemi sapere se è sufficiente

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

Fatemi sapere se esiste un plugin noto che potrebbe interferire con il plugin Discourse.

grazie mille per aver dedicato del tempo a indagare su questo!

Potresti avere alcuni plugin che sono la causa. Come prima misura, potresti abilitare questa impostazione nelle impostazioni “Pubblicazione” di WP Discourse.

Cambia il modo in cui il plugin salva i campi personalizzati e potrebbe influire sul comportamento nel tuo caso. Probabilmente non risolverà il problema, ma potrebbe darci maggiori informazioni. Una volta abilitata, prova a ricreare le stesse circostanze.

Dopo aver provato, passeremo a disabilitare i singoli plugin per vedere se riusciamo a isolare il problema. Hai per caso un sito di staging (ovvero un sito con i tuoi temi e plugin, ma senza dati reali)?

Aggiungerò anche più logging alla logica di pubblicazione nel plugin per aiutare a chiarire questa classe di problemi (ovvero, la memorizzazione dei metadati in Wordpress dopo la pubblicazione su Discourse). Ci vorrà un po’ di tempo, ma nel frattempo possiamo eseguire alcuni test come quelli sopra.

Ciao e grazie ancora per il tuo tempo!

Ho abilitato quella impostazione ma il problema persiste.
In realtà utilizziamo un sito web di staging e la cosa divertente è che, anche se i plugin, i temi e i file sono esattamente gli stessi, si comporta in modo diverso - il che significa che dopo aver pubblicato un post di prova, questo viene pubblicato correttamente su Discourse, e poi se torno allo stesso post, non vedo l’errore “Embed url has already been taken” nelle impostazioni della barra laterale di Discourse. Invece lo vedo così:

Quindi le differenze tra i server sono:
Sito di staging:
WordPress - 6.5.3
PHP - 8.1.27
MySQL - 10.6.16

Sito live:
WordPress - 6.5.3
PHP - 8.1.2-1ubuntu2.17
MySQL - 5.5.5

Ehi @npm0912, questo dimostra che il problema riguarda il tuo ambiente.

  1. Potresti condividere il file “meta” completo dal visualizzatore di log di WP Discourse da entrambe le istanze.
  2. Quali sono le differenze tra il Discourse che stai usando con lo staging e quello che stai usando in produzione?
  3. Utilizzi soluzioni di caching, CDN o load balancing in WordPress in produzione che non utilizzi nello staging?

Ciao @angus,

  1. Certo, ecco i log:
    Staging:
    Staging wp-discourse-logs-metafile-2023-04-13-2024-05-28.txt (2,4 KB)
    Sito live:
    LIVE wp-discourse-logs-metafile-2024-05-13-2024-05-28.txt (2,4 KB)

  2. l’istanza Discourse è la stessa, l’unica differenza è che dallo staging sto pubblicando in un’altra categoria del forum.

  3. Uso WP Rocket e la cache Redis su entrambe le istanze, quindi immagino che questo non influenzi.

Grazie!

Ci sono alcune piccole differenze tra i due. Probabilmente non sono la causa, ma vale la pena mantenere i tuoi siti di staging e di produzione identici, per eliminare la possibilità che questa sia la causa, sia qui che per altri problemi.

A parte questo, ti consiglio di controllare attentamente le impostazioni di WP Rocket (ad esempio, sono effettivamente le stesse tra i tuoi due siti). Sebbene funzioni bene per i suoi scopi specifici, WP Rocket è spesso la causa di problemi con i plugin di WordPress.

Si noti che Wordpress richiede attualmente la versione 8.0 o successiva di MySQL. È necessario aggiornare il database di produzione.

Riferimento incrociato: Could not update the meta value of discourse_post_id in database - #2 by angus

in realtà, WP Discourse ha ottenuto informazioni errate sul database. la versione corretta del database è 10.6.16-MariaDB-0ubuntu0.22.04.1

La versione stampata in quel file è l’output di una funzione principale di Wordpress:

$wpdb->db_version()

Vedi qui nel codice, e vedi ulteriormente

Questa è la versione che Wordpress pensa di star usando. Sembra essere questo il tuo problema.

Hai ragione. Ho ricontrollato la funzione db_version() all’interno del tema e infatti ho ottenuto 5.5.5 come risultato. Ma nella pagina “Stato del sito” del backend vedo la versione 10.6.16-MariaDB, la stessa versione che mi hanno menzionato gli amministratori di sistema… Intendo dire che anche quella dovrebbe essere la versione che WP vede, giusto?

Mi dispiace, ma potrebbero esserci diversi problemi e non è possibile dirlo con certezza senza esaminare il tuo server.

Considerando i problemi che hai segnalato, ti suggerisco di indagare a fondo su questo aspetto.