Probleme d’encodage sur son site wordpress

J’ai eu ce problème sur ce présent site: d’un seul coup j’ai eu dans mon menu des charactères bizarres, et si jamais je cliquais sur un onglet de menu, ca revenait à a normale.Mais c’etait quand meme bien genant, à l’ouverture de la page, sans la recharger,j’avais ces charatères bizarres..

j’ai lu plusieurs topics à ce sujet: tous parlent d’un problème d’encodage ce qui parait logique.

wp-config

Selon certains et selon le problème, Il faut commenter les deux lignes du fichier wp-config traitant du charset et db_collate.

define('DB_CHARSET', 'utf8');

/** The Database Collate type. Don't change this if in doubt. */
define('DB_COLLATE', '');

Vous pouvez essayer, chez moi ca n’a eu aucun impact.

wp_head()

J’ai ensuite juste deplacé le wp_head() de mon fichier header.php.Ayant une fonction issue de mon thème option dans la balise head, j’ai soit placé le wp_head après cette fonction, donc vraiment juste avant la balise html de fermeture </head>, soit avant la fonction.

En déplacant mon wp_head(), les charactères spéciaux disparaissent de mon menu, mais se retrouvent cette fois dans les posts..et cette fois ce ne sont plus des charactères bizarres mais juste un point d’interrogation qui remplace tous les ‘é’.(accents)

convertir ses fichiers en utf-8 dans notepad

Pour tester, j’ouvre un à un tous mes fichiers php depuis mon ftp, je les convertit de utf8 sans BOM vers de l’utf8 (tout court) avec notepad

A partir de la, Dans mon fichier wp-config, je place les deux lignes suivantes

define('DB_CHARSET', 'utf8');

define('DB_COLLATE', 'utf8_general_ci');

 

ca y est, le texte est redevenu normal..mais j’ai un nouveau problème, j’ai un espace qui s’est crée tout en haut de mon site, genre 32 px de vide..

je repasse tous mes fichiers en utf-8 sans Bom , en les ouvrant avec notepad depuis mon ftp

et la tout redevient normal.

 

Un plugin defectueux-cleaner sa base

En regardant la base de donnée ou sont stockés vos sites, j’ai eu personnellement cette mauvaise expérience,  les mauvais caractères peuvent etre issus d’un mauvais encodage dans la base.

En particulier le plugin wordfence security qui installe des tables en swedich, d’autres plugin tels que wp post slider également, et beaucoup, même après avoir été supprimés, laissent les tables mal encodées dans la base, on se retrouve vite avec dans la meme base, du utf8 unicode du utf8 general ci ou encore du swedish ou latin, ce qui fait naturellement buguer le site.

Il faut donc bien faire attention à ces plugins qui utilisent un encodage différent, parfois meme mélangeant plusieurs encodage!!(mal concus?)

J’ai donc supprimé ce plugin « wordfence security » qui a mauvaise réputation notamment pour les multi sites.Encore quelques autres plugins supprimés mais dont les tables polluaient encore ma base.Et enfin tout redevient normal.

Conclusion

En conclusion, les procédures habituelles sont : repasser(ouvrir) tous ces fichiers sur le ftp avec par exemple notebeans, et les réenregistrer en utf 8 sans BOM quand ce n’est pas le cas.

Bien vérifier la validité de votre code, (dans le header notamment) puis enfin, vérifier dans la base s’il ne traine pas des plugins mal encodés!!