Skip to content

Tout pour WordPress, le développement web — et plus encore

🪓 Comment diviser de gros fichiers XML lors de l'importation dans WordPress

🪓 Comment diviser de gros fichiers XML lors de l'importation dans WordPress

Vous avez exporté votre site, mais le fichier pèse 30 mégaoctets et ne passe pas sur le nouvel hébergement? L’import standard WordPress s’interrompt silencieusement à mi-parcours et une partie du contenu disparaît. Un scénario familier pour quiconque migre depuis un ancien site comportant des centaines d’articles.

La cause est à chercher dans les limites strictes de l’hébergement: upload_max_filesize (généralement 2 à 8 Mo), post_max_size et un délai d’exécution des scripts de 30 secondes. Un fichier WXR (WordPress eXtended RSS) contenant des années de contenu dépasse facilement ces seuils.

Voici quatre méthodes éprouvées pour découper un gros fichier XML en plusieurs parties et tout importer sans perte de données. De la plus simple à la plus avancée.

💡 Aperçu rapide:

  • Augmenter la limite de téléchargement via le support d’hébergement: c’est la voie la plus rapide si votre prestataire coopère.
  • Besoin d’un outil hors ligne pour un système d’exploitation spécifique? Essayez l’utilitaire de bureau WXR File Splitter (Windows) ou WXR Split (Mac).
  • Option multiplateforme sans installation: le séparateur WXR en ligne découpe le fichier directement dans votre navigateur.
  • Vous travaillez en ligne de commande? WP-CLI wp import accepte plusieurs fichiers et n’est pas limité par les restrictions web.

Pourquoi l’import échoue: trois limites qui bloquent

L’import WordPress se heurte à trois barrières simultanément.

  • upload_max_filesize: la taille maximale d’un fichier téléchargé individuellement. Sur un hébergement économique, c’est 2 Mo; sur une offre milieu de gamme, 8 à 32 Mo.
  • post_max_size: la taille totale de la requête POST. Elle doit être supérieure à upload_max_filesize, sans quoi le fichier n’atteindra jamais le gestionnaire.
  • max_execution_time: le temps d’exécution du script. Si l’import dure plus de 30 à 60 secondes, le processus s’arrête même si le fichier a été correctement téléchargé.

Une exportation depuis un ancien site comptant 500 articles et des milliers de commentaires produit facilement un XML de 15 à 25 Mo. Un tel fichier ne passe pas avec les limites standard.

Méthode 1: demander à votre hébergeur d’augmenter les limites

La solution la plus simple consiste à contacter le support d’hébergement. La plupart des prestataires acceptent de passer upload_max_filesize à 64 ou 128 Mo sur demande, surtout sur les offres supérieures à l’entrée de gamme.

Si vous avez vous-même accès aux paramètres du serveur, ajoutez ceci à wp-config.php:

1define('WP_MEMORY_LIMIT', '256M');

Et créez un fichier .user.ini à la racine du site (pour les hébergements utilisant PHP-FPM):

1upload_max_filesize = 128M
2post_max_size = 128M
3max_execution_time = 300

Sur un hébergement mutualisé, .user.ini ne fonctionne pas toujours; dans ce cas, il vous faudra ouvrir un ticket de support.

Après avoir modifié les limites, téléchargez le fichier WXR d’origine via Outils → Importer → WordPress. Si le fichier ne passe toujours pas, passez au découpage.

Méthode 2: WXR File Splitter pour Windows

Pour Windows, il existe un utilitaire de bureau classique appelé WXR File Splitter. L’interface est minimaliste, mais il fait le travail: ouvrez le fichier WXR, indiquez le nombre de parties ou la taille maximale de chacune, cliquez sur «Split Files» et vous obtenez plusieurs fichiers XML dans le même dossier.

Fenêtre du séparateur de fichiers WXR affichant les données du fichier XML

L’utilitaire affiche le nombre d’éléments présents dans le fichier avant le découpage: articles, pages, commentaires. Cela vous aide à estimer le nombre de parties à créer.

Remarque: l’outil est ancien et le site du développeur d’origine n’est plus accessible. Si l’utilitaire ne fonctionne pas sous Windows 10/11, passez directement à la méthode 4 (séparateur en ligne); elle est plus fiable.

Méthode 3: WXR Split pour Mac

Les utilisateurs de Mac disposent d’un équivalent appelé WXR Split. La logique est la même: chargez le XML, définissez la taille des parties, obtenez un ensemble de fichiers à importer séquentiellement.

Interface de fractionnement WXR avec sélection de la taille du fichier de sortie

Comme pour la version Windows, le site officiel de cet outil peut être indisponible. Ne perdez pas de temps à chercher; le séparateur web de l’étape suivante fonctionne sur tous les systèmes d’exploitation.

Méthode 4: le séparateur en ligne wxrfilesplitter.com

L’option la plus pratique aujourd’hui est l’outil web gratuit WXR File Splitter. Il fonctionne dans le navigateur, ne nécessite aucune installation et n’est lié à aucun système d’exploitation.

Comment découper le fichier:

  • Ouvrez wxrfilesplitter.com.
  • Téléchargez votre fichier WXR. La limite de taille est de 256 Mo, ce qui est largement suffisant pour n’importe quel site.
  • Indiquez la taille de partie souhaitée; le développeur recommande 2 Mo pour un import stable.
  • Cliquez sur Submit et téléchargez l’archive contenant les fichiers XML découpés.

L’outil ne stocke pas les fichiers sur le serveur; les données temporaires sont effacées toutes les heures. Après le découpage, importez chaque fichier un par un via le chemin standard Outils → Importer → WordPress.

Le principal avantage: vous n’avez pas besoin de trouver un utilitaire pour votre système d’exploitation ni de comprendre la ligne de commande. Tout se passe dans le navigateur en quelques clics.

Méthode 5: l’import WP-CLI (pour ceux qui travaillent en console)

Si vous avez un accès SSH au serveur et que WP-CLI est installé, vous pouvez importer sans aucun découpage, ou avec découpage pour plus de rapidité.

WP-CLI accepte plusieurs fichiers à la fois:

1wp import file1.xml file2.xml file3.xml --authors=create

L’option --authors=create crée les comptes auteurs s’ils n’existent pas sur le nouveau site.

Cette méthode présente deux avantages: d’une part, WP-CLI fonctionne en ligne de commande et n’est pas contraint par les limites PHP web; d’autre part, vous pouvez passer un répertoire de parties découpées en une seule commande.

Pour activer une journalisation détaillée pendant l’import, ajoutez ceci à wp-config.php:

1define('IMPORT_DEBUG', true);

WP-CLI produira alors un rapport détaillé pour chaque élément traité, indiquant ce qui a été importé et ce qui a été ignoré.

⁉️🤔 Foire aux questions

Le fichier fait 40 Mo et aucune méthode ne fonctionne. Que faire?

Le problème n’est probablement pas la taille mais le délai d’exécution. Même un fichier découpé en parties de 2 Mo peut bloquer si le serveur ne peut pas traiter chaque partie en moins de 30 secondes. Demandez à votre hébergeur d’augmenter max_execution_time à 300. Ou utilisez WP-CLI, qui ne dépend pas des délais web.

Puis-je simplement découper le XML dans un éditeur de texte?

Techniquement oui, mais en pratique non. Un fichier WXR a une structure complexe avec des espaces de noms et des balises <item> répétitives, chacune contenant un article complet avec ses métadonnées. Un découpage manuel cassera presque certainement le XML et l’importateur WordPress renverra une erreur d’analyse. Utilisez des outils spécialisés.

Dois-je découper le fichier si je migre vers un vrai VPS?

Sur un VPS, vous contrôlez vous-même les limites; passez upload_max_filesize et post_max_size à 128 Mo et le fichier sera téléchargé en une seule fois. Mais attention aux délais: même sur un serveur puissant, importer 500 articles avec des fichiers médias peut prendre 2 à 3 minutes. Augmentez max_execution_time ou découpez le fichier par précaution.

Que faire si une partie du contenu n’a pas été importée après le découpage?

Vérifiez que vous avez bien importé TOUS les fichiers obtenus. Une erreur fréquente: vous téléchargez l’archive depuis wxrfilesplitter.com, vous importez le premier fichier et vous vous arrêtez. Chaque fichier contient sa propre portion d’éléments; sauter une partie signifie perdre ces enregistrements. Importez séquentiellement, en attendant que chaque import se termine.

Qu’en est-il des extensions d’import comme WP All Import?

WP All Import peut lire de gros fichiers XML et les importer par lots, mais il est conçu pour importer des données dans des types de publication personnalisés et des champs ACF, PAS pour importer un WXR standard avec des articles, pages et commentaires tels quels. Pour la tâche qui consiste à «déplacer un site entier», utilisez les outils décrits ci-dessus.

En résumé: quel outil utiliser selon votre besoin

Il n’existe pas d’outil universel; le choix dépend de l’accès serveur dont vous disposez et de la taille du fichier.

  • Si vous pouvez contacter le support de votre hébergement, commencez par augmenter les limites. Cela prend 5 minutes et résout souvent le problème sans aucun découpage.
  • Fichier jusqu’à 256 Mo sans accès console: le séparateur WXR en ligne traitera la tâche dans votre navigateur en quelques clics.
  • Vous avez SSH et WP-CLI? wp import avec un répertoire de fichiers découpés est la méthode la plus fiable et la plus rapide.
  • Gardez les anciens utilitaires de bureau (WXR File Splitter / WXR Split) comme solution de secours; ils fonctionnent sur les systèmes plus anciens, mais les sites des développeurs ne sont plus disponibles.

Vous avez découpé votre XML et importé le site avec succès? Partagez dans les commentaires quelle méthode a fonctionné pour vous et si vous avez rencontré des pertes de contenu pendant l’import.