Résoudre l'erreur d'analyse XML sous WordPress

erreur-xml-wordpress
WordPress Lecture 3 minutes • 1 juin 2014

Après une mise à jour de votre thème, un ajout d’extension, ou bien une mise à jour WordPress, il se peut que vous ayez à faire à une erreur XML. Ce message s'affichait sur un de mes sites, lorsque je souhaitais afficher le Sitemap avec les plug-ins Yoast SEO ou Google Sitemap :

erreur-xml-wordpress

Erreur d'analyse XML : instruction de traitement XML ou texte pas au début d'une entité externe
Emplacement : http://mon-domaine.fr/feed
Numéro de ligne 2, Colonne 1 :
<?xml version="1.0" encoding="UTF-8"?> ^

ou

This page contains the following errors:
error on line 2 at column 6: XML declaration allowed only at the start
of the document
Below is a rendering of the page up to the first error.

Le saut de ligne provoque cette erreur

Après de longues recherches pour résoudre ce problème agaçant, j'ai remarqué que la plupart du temps, l'erreur était causée par un saut de ligne avant la déclaration XML.

Fondamentalement cette erreur se produit si il y a un espace avant une déclaration XML (<? Xml ...?>) dans votre flux. Cette erreur indique que le code comporte des lignes vides, qui peuvent s'être facilement introduites dans le code PHP WordPress d'un plugin, d'un thème ou de n'importe quel fichier de configuration.

C'est pourquoi il vous faudra aller chercher les sauts de ligne vide avant les tags PHP :
<? php
et après la balise de fermeture PHP
?>

Je vous vois déjà en train de soupirer... Mais une solution simple existe, la voici.

wejnswpwhitespacefix.php, un script qui corrige tous les sauts de lignes

1. Téléchargez le fichier suivant: http://wejn.org/stuff/wejnswpwhitespacefix.php.
Oui, je craignais qu'il contienne un tas de virus, mais après vérification (et l'utilisation sur plusieurs sites WordPress), il s'avère être clean.

2. Transférez le fichier "ejnswpwhitespacefix.php" via FTP dans votre répertoire à la racine de l'installation de WordPress. Là ou il y a le fichier wp-config.php.
J'insiste sur ce point, ne le placez pas autre part.

3. Modifiez le fichier index.php que vous trouverez dans votre répertoire à la racine également. Ajouter le code suivant juste après l'ouverture de la balise <? php  du fichier index.php.

[pastacode lang="php" manual="include('wejnswpwhitespacefix.php')%3B" message="Appel du fichier depuis index.php" highlight="" provider="manual"/]

Ne pas oublier de sauvegarder la page index.php.

4. Rechargez votre page : tadaaa l'erreur XML à disparue et tout fonctionne correctement !

Vous pouvez maintenant effacer la ligne de code précédemment ajoutée dans index.php (étape 3) et supprimer le fichier "ejnswpwhitespacefix.php" (étape 2).

17 réponses à “Résoudre l'erreur d'analyse XML sous WordPress”

  1. Yohann Petiot dit :

    Bonjour,
    Merci beaucoup pour ce billet !
    J’ai eu ce problème dernièrement, en étant passé au multisite avec wordpress.
    J’ai du changer de plugin pour faire un sitemap et plus rien de fonctionnait.
    Du coup, j’ai regardé ce que vous avez écrit dans votre fichier php, et j’avais exactement le même problème !
    Un saut de ligne tout pourri dans mon fichier functions.php !
    Problème résolu, merci encore 🙂

  2. coco dit :

    Merci beaucoup pour le script. ça marche super bien!
    J’ai perdu tout la matinée en nettoyant les lignes vides mais votre script à fait le travail mieux que moi.
    Bonne journée

  3. hector dit :

    Merci pour cette aide.
    La solution semble malheureusement inopérante.

    • admin dit :

      Bonjour Hector
      Avez-vous essayé de désactiver les plug-ins un a un voir si cela vient de là ?
      Il se peut également que le soucis viennent de votre thème WP. Désactivez le pour tester.
      Cdlt

  4. Sebastien dit :

    Etonnant, mais je ne sais pas si c’est cela !
    Dans le fichier functions.php de mon thème Child, supprimé le ?> et les linefeed finaux, et ca marche ! !!!

    • Camille dit :

      Effectivement, le script n’a pas fonctionné pour moi, mais j’ai également enlevé le ?> et les espaces superflus dans le fichier function.php de mon child theme et tout est rentré dans l’ordre 🙂

  5. hbconsultant dit :

    Bonjour
    J’ai suivi toutes les étapes, j’ai maintenant cette erreur « Parse error: syntax error, unexpected ‘<' in /htdocs/index.php on line 8"
    Voici le code index.php si vous pouvez m'aider. Merci d'avance
    <?php
    /**
    * Front to the WordPress application. This file doesn't do anything, but loads
    * wp-blog-header.php which does and tells WordPress to load the theme.
    *
    * @package WordPress
    */

    /**
    * Tells WordPress to load the WordPress theme and output it.
    *
    * @var bool
    */
    define(‘WP_USE_THEMES’, true);
    /** Loads the WordPress Environment and Template */
    require( dirname( __FILE__ ) . ‘/wp-blog-header.php’ );

    • Bonsoir,
      Une erreur s’était glissé dans le code de l’étape 3, je l’ai corrigé :

      Si l’erreur reste malgré tout, essayez en fermant la balise php à la fin du document index.php. Ajoutez ?>

  6. jcdelpit dit :

    bonjour,
    j’avais le même soucis, cela marche parfaitement avec votre fichier wejnswpwhitespacefix.php rajouté à la racine et la modif du fichier index.php – j’utilise la version WordPress 4.2.1 avec le thème Gameday.
    MERCI !

  7. […] nous avons trouvé sur un site   une solution simple et efficace : le téléchargement d’un patch puis la modification du […]

  8. khadija dit :

    Merci beaucoup pour cette solution, ca marche très bien

  9. InformaGenie dit :

    ça sauve ! merci pour ce tuto

  10. Lokiiy dit :

    Ne fonctionne pas pour moi avec version Version 4.7.4 de WordPress

  11. Karim dit :

    Merci beaucoup !

  12. Christophe Horoyan dit :

    Merci !

  13. Emilie dit :

    hello,
    est-ce toujours d’atualité?
    Quel est le code de l’étape 3? Il n’est pas sur le post. Merci

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *