Une erreur critique s’est produite sur ce site Web le 2 novembre 2022.
Rien n’est pire que de voir son site WordPress en panne. Je suis passé par là, je connais ce sentiment. Donc, aujourd’hui, alors que je faisais ma routine, j’ai vérifié un de mes sites, et BAM : « Il y a eu une erreur critique sur ce site web ».
Le 1er réflexe, sachant que la version de WordPress se mettait automatiquement à jour vers la version 6.1 « Misha », a été de rétrograder le PHP de 8.1 à 8.0. Rien de résolu… J’ai essayé de rétrograder à la version 7.4 de PHP… Encore une fois, rien ne s’est produit. L’erreur était toujours là, et le site était toujours en panne.
J’ai donc commencé à étudier le problème. J’ai activé le mode « WordPress debug », et j’ai trouvé ce message :
Fatal error: Uncaught Error: Call to undefined method WP_Textdomain_Registry::reset() in /public_html/wp-content/plugins/wpml-string-translation/classes/MO/Hooks/LanguageSwitch.php:139 Stack trace: #0 /public_html/wp-content/plugins/wpml-string-translation/classes/MO/Hooks/LanguageSwitch.php(119): WPML\ST\MO\Hooks\LanguageSwitch->resetTranslationAvailabilityInformation() #1 /public_html/wp-content/plugins/wpml-string-translation/classes/MO/Hooks/LanguageSwitch.php(73): WPML\ST\MO\Hooks\LanguageSwitch->changeMoObjects() #2 /public_html/wp-content/plugins/wpml-string-translation/classes/MO/Hooks/LanguageSwitch.php(48): WPML\ST\MO\Hooks\LanguageSwitch->switchToLocale() #3 /public_html/wp-includes/class-wp-hook.php(310): WPML\ST\MO\Hooks\LanguageSwitch->languageHasSwitched() #4 public_html/wp-content/plugins/wpml-string-translation/classes/MO/Hooks/LanguageSwitch.php on line 139"
Donc, si vous obtenez l’erreur « Il y a eu une erreur critique sur ce site web ». WordPress ces jours-ci, et que vous utilisez le plugin WPML, cela est dû à la dernière mise à jour de WordPress 6.1. C’est un problème connu à l’heure actuelle, et l’équipe de WPML essaie de le résoudre.
Quelle est exactement cette erreur et comment puis-je la résoudre ?
Le message « Il y a eu une erreur critique sur ce site Web » est généré en raison d’un conflit interne entre WPML (version 4.5.11), String Translation (3.2.2) et la dernière version de WordPress (6.1, « Misha »).
Alors, comment le résoudre?
Heureusement, il existe quelques moyens de résoudre ce problème:
1. Si vous pouvez accéder au tableau de bord d’administration de WordPress, essayez de mettre à jour à la fois WPML, à la dernière version (4.5.12) et String Translation, à la dernière version (3.2.3). Vous devez suivre les étapes mentionnées dans l’article officiel de WPML concernant ce problème.
2. Si vous ne pouvez pas accéder au tableau de bord d’administration, allez sur votre serveur d’hébergement et essayez de restaurer une sauvegarde effectuée le 1er novembre (la mise à jour automatique de WordPress vers 6.1 est arrivée ce matin, le 2 novembre). En fonction de votre hébergeur, il existe de nombreuses fonctionnalités de sauvegarde. Dans mon cas, j’ai utilisé JetBackup 5.
Après ça :
- désactiver la fonction de mise à jour automatique.
- effectuez les mises à jour requises. Si vous ne pouvez pas mettre à jour le plugin String Translation, supprimez-le simplement et téléchargez à nouveau la version la plus récente (j’ai posté ci-dessous la source d’où vous pouvez l’obtenir).
- mettez à jour la version de WordPress à la dernière version et testez votre site. Tout devrait fonctionner correctement.
3. Si vous ne disposez pas d’une sauvegarde récente, vous pouvez également essayer ceci :
FAITES UNE SAUVEGARDE AVANT D’EFFECTUER TOUT CHANGEMENT !
- Accédez à votre site par FTP ou par le gestionnaire de fichiers du site du panneau de contrôle.
- Allez dans wp-content/plugins/ et renommez le nom du dossier du plugin String Translation.
- Faites la même chose avec le plugin WPML (renommez le nom du dossier du plugin).
NOTE: Vous pouvez aussi supprimer entièrement les plugins et réinstaller la dernière version de ceux-ci. MAIS FAITES UNE SAUVEGARDE AVANT !
Après cela, téléchargez les nouveaux plugins depuis la source officielle : WPML Downloads
Votre site devrait être en ordre maintenant.