Dal giorno della pubblicazione di WordPress 6.7, cioè dal 12 novembre scorso, sono cominciati guai sul plugin WooCommerce: errori e warning su moltissimi siti web, traduzioni saltate, permalink che vanno improvvisamente in 404 e altri bug ancora tutti da scoprire.
Gli sviluppatori di tutto il mondo stanno assistendo ad un cortocircuito tutto interno a casa Automattic che merita di essere raccontato.
Il problema
Con il rilascio di WordPress 6.7, sono state introdotte modifiche significative nel caricamento delle traduzioni. Questi cambiamenti hanno come obiettivo l'adozione delle migliori pratiche per l'internazionalizzazione, garantendo che le stringhe di traduzione vengano caricate in modo sicuro ed efficiente. La principale novità è che il caricamento dei file di traduzione ora deve avvenire durante l'azione init
o successivamente, evitando che vengano caricati troppo presto nel ciclo di esecuzione di WordPress.
Nonostante queste modifiche siano state annunciate da WordPress con largo anticipo, WooCommerce 9.4, una delle estensioni più utilizzate nel mondo, è risultato non completamente compatibile con WordPress 6.7. Gli utenti hanno segnalato numerosi avvisi di debug, con errori come:
_load_textdomain_just_in_time è stato chiamato in modo errato. Il caricamento delle traduzioni per il dominio è stato attivato troppo presto. Le traduzioni dovrebbero essere caricate durante l'azione init o successivamente.
Questi avvisi non solo compromettono l’esperienza di sviluppo, ma possono anche causare problemi sui siti di produzione, specialmente se gli errori vengono mostrati agli utenti finali.
La causa tecnica
La radice del problema risiede nello spostamento dei file di traduzione in WordPress 6.7. In precedenza, i file .mo
di traduzione venivano caricati in modo anticipato, durante la fase iniziale del ciclo di esecuzione di WordPress. Con WordPress 6.7, il caricamento delle traduzioni segue ora una procedura più rigorosa:
- I file di traduzione vengono caricati solo dopo l'inizializzazione completa del core, assicurandosi che le dipendenze siano state correttamente registrate.
- I temi e i plugin devono adeguarsi a questo nuovo approccio, spostando le chiamate per il caricamento delle traduzioni all'interno di un hook appropriato, come
init
o successivi. - WooCommerce, che carica molte delle sue traduzioni durante la fase di bootstrap del plugin, non ha completamente adottato queste modifiche nel rilascio 9.4.
In sostanza, WooCommerce continua a utilizzare una metodologia di caricamento anticipato che va clamorosamente in conflitto con le nuove regole di WordPress, generando avvisi di debug o, peggio, errori 500.
Un paradosso tutto interno ad Automattic
La situazione appare ancora più paradossale considerando che sia WordPress che WooCommerce sono prodotti di Automattic. Sarebbe logico aspettarsi una stretta collaborazione tra i team di sviluppo per evitare incompatibilità di questo tipo. WordPress ha annunciato i cambiamenti con ampio margine di preavviso, pubblicando dettagli tecnici e linee guida per gli sviluppatori.
Nonostante ciò, WooCommerce non è riuscito a rilasciare un aggiornamento completamente compatibile con WordPress 6.7, lasciando molti utenti confusi e frustrati. Per un'azienda che promuove la sinergia tra i propri prodotti, questo incidente rappresenta un errore significativo.
Possibili soluzioni temporanee (=pezze!)
Per mitigare gli effetti di questo problema, gli utenti possono adottare le seguenti strategie:
- Attendere… e poi installare gli aggiornamenti di WooCommerce che risolveranno queste incompatibilità.
- Sopprimere temporaneamente gli avvisi in ambienti di sviluppo, aggiungendo questo snippet al file
functions.php
del tema attivo:
add_filter( 'doing_it_wrong_trigger_error', '__return_false' );
- Disattivare gli avvisi di debug sui siti di produzione, impostando
WP_DEBUG_DISPLAY
sufalse
nel filewp-config.php
:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_DISPLAY', false );
Non è un buon segno…
Questo incidente sottolinea l'importanza della comunicazione e della collaborazione interna ad Automattic. La disconnessione tra WordPress e WooCommerce è sorprendente, considerando l'ampio preavviso fornito e l'importanza di WooCommerce nell'ecosistema WordPress.
È auspicabile che Automattic affronti rapidamente queste problematiche, garantendo che i suoi prodotti di punta lavorino in perfetta armonia.
In casa Auomattic c’è comunque odore di bruciato e questo scivolone arriva troppo a ridosso della disputa tra Matt Mullenweg e WP Engine per non far sospettare una situazione di crisi profonda di WordPress… chi lo sa!
Nel frattempo, gli sviluppatori devono destreggiarsi tra soluzioni temporanee e modifiche di fortuna per evitare interruzioni sui loro siti web, sperando in una risoluzione definitiva nel prossimo aggiornamento.