WordPress : enregistrement impossible avec emojis. Les contenus avec emojis disparaissent après avoir enregistré.

Soit, sur l’éditeur classique de WordPress, le contenu rédigé est perdu après enregistrement. Soit, sur l’éditeur de blocs (Gutenberg), une Erreur 500 peut être observée dans la console du navigateur, après l’enregistrement d’un article, d’une page ou tout autre contenu dans lequel vous auriez inséré un ou plusieurs Emojis.

Cette erreur peut aussi être affichée par WordPress :

La mise à jour a échoué. Impossible d’insérer la publication dans la base de données.

La mise à jour a échoué. Impossible d’insérer la publication dans la base de données. Updating failed. Error message : Could not update post in the database.
Updating failed. Error message : Could not update post in the database.

La cause est probablement que votre base de données WordPress contient des Tables MySQL avec d’anciens Interclassements / Collations, comme utf8mb3, ou plus ancien, latin1_swedish_ci.

Comme sur la capture d’écran ci-dessous réalisée dans phpMyAdmin.

WordPress enregistrement impossible avec emojis phpMyAdmin interclassement latin1_swedish_ci.

La solution pour cela est de convertir la ou les tables dans un charset utf8mb4 comme utf8mb4_unicode_ci ou utf8mb4_unicode_520_ci. Cela peut être réalisé individuellement, table après table, ou globalement sur toute la base de données.

Convertir l’interclassement d’une seule table vers utf8mb4 pour permettre l’enregistrement d’emojis sous WordPress

Pour cela, dans phpMyAdmin, identifiez une table n’ayant pas d’interclassement utf8mb4, ensuite cliquez sur “Structure”, comme sur la capture ci-dessous.

WordPress enregistrement impossible avec emojis convertir charset table MySQL.

Une fois entrée dans l’analyse de Structure de la table souhaitée, cliquez sur “Opérations” pour y modifier l’interclassement et permettre la sauvegarde d’emojis dans cette table MySQL.

WordPress enregistrement impossible avec emojis phpMyAdmin charset pour emojis.

Dans options spécifique à cette table MySQL…

  1. Sélectionnez un Interclassement utf8mb4 comme utf8mb4_unicode_ci ou utf8mb4_unicode_520_ci.
  2. Cocher la case permettant de changer la collation de toutes les colonnes de cette table (indispensable)
WordPress enregistrement impossible avec emojis passer sous utf8mb4 pour pouvoir enregistrer.

Nous constatons enfin que l’interclassement de toutes les colonnes de cette table MySQL ont été converties en utf8mb4.

WordPress enregistrement impossible avec emojis, solution, passer sur une collation utf8mb4_unicode_ci ou utf8mb4_unicode_520_ci

Cependant, si votre base de données MySQL contient de très nombreuses tables dont la collation est erronée, cette opération risque de vous prendre beaucoup de temps. Donc, si vous pouvez vous permettre d’unifier toutes vos tables MySQL dans un même interclassement utf8mb4_unicode_520_ci par exemple, voyez le point suivant pour réaliser cette opération en une seule fois pour toute la base de données.

Convertir l’interclassement d’une base de données (toutes les tables) vers utf8mb4 pour permettre l’enregistrement d’emojis sous WordPress

Encore une fois, l’opération sera à réaliser dans phpMyAdmin. Ensuite > $database > Opérations > Faites défiler la fenêtre jusqu’à la section Interclassement et choisissez le Charset vers lequel Upgrader vos Tables MySQL…

phpMyAdmin, Opérations, Interclassement, utf8mb4_unicode_520_ci

Vérification complémentaire du DB_CHARSET de WordPress dans wp-config.php

Une fois toutes vos tables converties en utf8mb4, pensez également à vérifier votre fichier wp-config.php, à la racine de votre site WordPress, pour y vérifier que le Charset sélectionné est bien cohérent…

WordPress DB_CHARSET utf8mb4

Aller plus loin en continuant votre lecture…

WordPress, Santé du site : utf8mb4 nécessite une librairie cliente plus récente (emojis remplacés par un point « ? »)

Cela ne fonctionne toujours pas ? Vérifiez les modules PHP !

Chez EasyHoster, par défaut, nd_mysqli est activé.

Activer nd_msqli et désactiver mysqli

Cependant, si vous êtes chez un autre hébergeur cPanel, peut-être avez-vous le module PHP mysqli activé par défaut ?

Si c’est le cas, il sera nécessaire de désactiver mysqli et d’activer nd_mysqli en complément des précédentes actions effectuées dans votre base de données.

Sommaire de ce billet
Besoin d'aide ?

Le site WordPress speed.easyhoster.net ➚ permet de tester le potentiel des solutions d'Hébergement Web EasyHoster.