Outils

Migrer de Drupal 7 vers WordPress

C’est quasiment terminé, il était donc temps d’en parler. La maintenance de sécurité de Drupal 7 se termine en janvier 2025, il était temps de changer de solution. Ici, je vais surtout vous parler de la migration de Drupal 7 vers WordPress.

Pourquoi WordPress ?

La totalité de mes sites était construite avec Drupal 7 parce que c’était une solution que j’aimais et que je connaissais. Vers quoi me tourner ? J’avais tenté Backdrop CMS qui est un fork de Drupal 6/7. Si certains aspects sont assez sympas, l’outil a un écueil : la communauté est petite et toute la partie SEO est assez maigre. Or, j’ai un objectif de rentabilité.

J’ai tenté de tester Drupal 9/10 et j’ai très vite lâché l’affaire. Trop compliqué, trop gros, assez éloigné de mes besoins. Je n’ai pas forcément envie de me battre tous les jours avec du code et cette nouvelle mouture de Drupal me donnait l’impression que ça allait être le cas.

Je n’ai gardé Backdrop CMS que pour un projet : les fiches des parlementaires. Pourquoi ? Parce que j’ai adoré la construction des pages, avec un simple glisser-déposer extrêmement simple et que dans le cadre d’Arcadie, l’import et la mise à jour des données est identique à Drupal 7.

Enfin, le thème de base est totalement adapté aux mobiles et aux tablettes. À l’inverse, reconstruire les fiches sur WordPress était un cauchemar, à tous les points de vue. Donc, migration vers Backdrop CMS pour les fiches, WordPress pour tout le reste.

L’inconvénient majeur de WordPress

Si Drupal proposait tous ses modules de façon gratuite, ce n’est pas du tout le cas de WordPress. La majorité des extensions ont une version gratuite, assez limitée et une version payante, sur la base d’un abonnement mensuel ou annuel, qui libère toutes les fonctionnalités.

Dès lors, il faut faire une étude de marché avant la migration : lister les besoins, tester les extensions, voir ce qui peut fonctionner ou non. Une chance pour moi, j’ai accès à un genre de magasin qui me permet de télécharger les modules en version complète sans avoir à les payer. C’est ainsi que j’ai constaté que même en version payante, certaines extensions ne me permettaient pas de faire une migration fluide des fiches des parlementaires et encore moins de faire des mises à jour quotidiennes.

Les gens ne le savent pas forcément, mais, certaines semaines, j’ai 20 % des députés (sur 577) qui changent de commissions permanentes. Sur Drupal et Backdrop CMS, la mise à jour, par import de CSV — mon option préférée – est extrêmement simple. J’ai construit un modèle d’import grâce à Feeds, je me contente d’y mettre les données. Rien d’aussi simple avec WP All Import, même en version payante. WordPress n’est tout simplement pas conçu pour de la data de ce type.

La migration : un module qui fait le travail

Mais, comment migrer les données ? Quand je parle de données, je parle des articles, des pages, des images, etc. Il se trouve qu’il existe un module payant pour cela, qui est d’une simplicité enfantine : FG Drupal to WordPress.

Je l’ai acheté et déployé sur tous mes sites. On l’achète, on reçoit l’archive, on la téléverse dans WordPress. Une fois activé, on se rend dans le panneau de contrôle, on rentre les informations nécessaires, on sélectionne ce que l’on veut importer et on clique sur démarrer.

Quatre points doivent retenir votre attention. Le premier est l’installation préalable du module ACF ou Pods sur WordPress si vous avez créé des champs supplémentaires à vos types de contenus sur Drupal. Sinon, la migration ne fonctionnera pas totalement.

Le deuxième élément est la sélection des données. Vous pouvez tout faire d’un coup si vous n’avez pas beaucoup de contenus ou type de contenus par type de contenus.

Selon la configuration du serveur, vous aurez des erreurs 504. Surtout, ne recliquez pas sur démarrer/continuer l’importation. Pourquoi ? Parce que l’extension va repartir à zéro. C’est ainsi que sur mes premières tentatives, je me suis retrouvée à avoir quinze fois les mêmes articles. J’ai dû faire un hard reset du site et repartir de zéro.

Enfin, si vous ne voulez pas perdre votre référencement, gardez le module actif après avoir terminé la migration. FG Drupal to WordPress va procéder aux redirections. Si vous le désactivez, les redirections ne fonctionneront plus.

D’abord le thème et ensuite le reste

Par défaut, WordPress est installé avec quelques thèmes. Je savais déjà vers quel thème j’allais me tourner : Color Mag. C’est d’ailleurs celui qui est déployé sur tous mes sites WordPress. La version gratuite est suffisante et pour Arcadie, j’ai acheté la version complète, en profitant d’une offre de Noël.

Color Mag vient avec un module d’import, qui configure les pages avec un site prêt à l’emploi. J’avais expérimenté la migration des données puis l’installation et l’import des modèles de Color Mag. Cela n’a pas donné de bons résultats. J’ai donc fait l’inverse : j’ai d’abord installé Color Mag et c’est seulement après que j’ai migré les contenus.

J’ai d’ailleurs procédé de manière un peu exotique, en réalité. Dans un premier temps, j’ai migré tous les contenus d’Arcadie (sauf les fiches) vers WordPress, sans installer de thèmes. J’ai laissé le thème par défaut. Une fois les 775 contenus migré, je les ai exportés avec un outil natif de WordPress. J’ai fait un hard reset du site, j’ai installé Color Mag et importé le fichier XML des contenus. Ceci m’a permis de désinstaller FG Drupal to WordPress.

Quant aux contenus de types livres, j’ai carrément supprimé les champs que j’ai convertis en phrases, ce qui m’a permis de gagner quelques points de SEO dans Rank Maths.

Le SEO, le gros chantier

Tout cela m’a pris moins d’une semaine en réalité. La chose qui m’a vraiment pris une semaine complète a été la partie SEO. J’utilise Rank Maths en version gratuite. Encore une fois, mes sites ont besoin de visibilité donc, d’être bien référencé, donc, il faut taguer les articles. Dans le cas d’Arcadie, c’était même un impératif pour créer des dossiers thématiques et faire varier l’affichage de la page d’accueil en fonction de l’actualité.

Il a fallu reprendre un par un les 775 articles. Il fallait les taguer et malheureusement, corriger les images qui n’avaient pas été correctement importées. Au passage, j’en ai profité pour améliorer mon score SEO sur les articles : raccourcir les liens, ajouter un ou deux liens vers d’autres papiers, etc.

C’était long et assez ingrat.

Les liens cassés

Quand Arcadie contenait à la fois les articles de presse et les fiches des parlementaires, les liens étaient identiques. Mais, en coupant en deux le site, les liens ont changé. Comment repérer les liens qui ne menaient plus nulle part ? J’ai installé Broken Link Checker.

Une fois qu’il a fini de passer en revue tous les liens, il sort une liste des liens qui répondent 404 ou 403. C’est ainsi que j’ai découvert que beaucoup trop de sites utilisaient Cloudflare, y compris des sites gouvernementaux. Sans commentaire.

L’extension permet aussi de repérer les images qui n’ont pas été chargées correctement ou dont le lien a changé. Ce fut assez rapide à gérer.

La sécurité

C’est souvent le gros point noir de WordPress par rapport à Drupal : la solution serait moins sécurisée. En fait, WordPress est très populaire et très connu, les attaquants sont donc plus nombreux et les outils mis à disposition plus facile d’accès.

Mais, le spam est vraiment le truc insupportable sur WordPress. J’ai une théorie : WP_XMLRPC. Il s’agit d’une faculté de WordPress, qui permet de pinguer des sites WordPress entre eux. Je l’ai désactivé et depuis, Arcadie ne reçoit quasiment plus de spams.

Initialement, je m’étais dit que j’allais installer l’application WordPress sur mon téléphone, pour créer des articles plus rapidement, notamment quand je suis en vadrouille à l’Assemblée nationale. Mais, cela nécessite d’activer WP_XMLRPC. Je l’ai réactivé et cinq minutes plus tard, j’étais ban de mon serveur. En effet, mon hébergeur m’a prise pour un attaquant et après discussion, on est tombé d’accord pour désactiver WP_XMLRPC. Tant pis pour l’application.

Acheter un thème ou le faire ?

Pourquoi acheter un thème au lieu de le faire ? J’aime le CSS. À petites doses. J’avais déjà construit des thèmes pour Drupal, spécialement celui d’Arcadie, en me basant sur Bootstrap. Résultat, tout n’est pas adapté aux mobiles et tablettes, il y avait un problème dans les images et le code n’était pas nickel.

Je n’avais ni le temps ni l’envie de repartir de zéro. D’autant que la raison pour laquelle j’avais construit mes thèmes était l’absence d’offres dans Drupal. Sur WordPress, il y a une quantité phénoménale de thèmes disponibles.

Par ailleurs, même avec un outil de construction, j’ai un souci : je n’arrive pas à visualiser ce que je veux faire. Après avoir retourné la chose dans mon esprit, j’ai décidé de ne pas me prendre la tête.

La personnalisation du thème

Comme dit précédemment, j’ai acheté mon thème. Sur mes autres sites, je me suis contentée de la version gratuite et j’ai fait un thème enfant, pour personnaliser certains éléments. Pourquoi ? Parce que chaque mise à jour du thème efface les personnalisations faites du fichier functions.php.

Or, il y avait des défauts : des chaînes non traduites — ce qui n’est pas dramatique sur un blog, mais plus embêtant sur un site de presse — et des images mal cadrées. Le support de Color Mag a particulièrement brillé par son inefficacité. Il fallait donc trouver une autre solution sans perdre à chaque mise à jour, mes ajouts. Quant à faire un thème enfant, le problème était qu’il me faisait perdre toutes les fonctionnalités payantes du thème.

La solution s’appelle Code Snippets qui permet d’ajouter des bouts de code PHP, un peu comme le CSS additionnel. Un petit bout de PHP et toutes mes chaînes étaient traduites.

Quid des images mal cadrées et pourquoi s’en préoccuper ? J’ai un sens de l’humour assez noir, mais, je suis partie du principe qu’illustrer la nécrologie de Jean-Marie Le Pen avec une photo qui le montre sans tête en page d’accueil serait assez mal perçu. Là encore, j’ai pu piocher dans la bibliothèque d’extensions et j’ai choisi Crop Thumbnails. Il permet de recadrer toutes les images et miniatures en fonction.

J’ai passé en revue toutes les images, pour recadrer celles qui en avaient besoin. Comme pour les liens, cela a été assez rapide.

Le bilan de la migration

Initialement, j’avais tablé sur deux mois et je comptais sur les vacances parlementaires de l’été 2024. Pourquoi ? Parce que l’Assemblée nationale et le Sénat étaient en zone « noire » en raison des Jeux olympiques. Mes sources me disaient aussi qu’on n’allait pas siéger au-delà du 18 juillet. Connaissant la maison, on aurait repris très tranquillement aux alentours du 15 septembre.

Et la dissolution est tombée. J’ai fini d’importer tous les nouveaux députés, de suivre la rentrée et de trier mes photos, aux alentours du 11 août et je partais en vacances quelques jours plus tard. Impossible de lancer la migration et honnêtement, je n’avais pas du tout la tête à cela. Il ne me restait qu’un créneau : les vacances de fin d’année.

J’ai donc fait en trois semaines, ce que j’avais prévu de faire en deux mois. Il reste quelques détails à corriger, mais cela se fera au fil de l’eau.

WordPress pour la presse ?

Question : est-ce que WordPress est bien adapté pour un site de presse sérieux ? En fait, ce que vous ne savez pas, c’est combien coûte la mise en place d’un site de presse. Beaucoup de médias passent par des agences spécialisées ou des solutions qui se veulent clef en main. Dans les deux cas, cela coûte très cher et quand je dis cher, je parle de montant à six chiffres. Et encore : cela n’inclut pas la maintenance.

D’autres ont des équipes Tech suffisamment solides pour créer leurs propres outils, mais, là encore, cela coûte cher. Il est évident qu’une petite rédaction ne peut pas suivre, sauf à s’endetter. Un jour, on parlera de la dette technologique dans les rédactions. Au final, le plus important est d’avoir un site fonctionnel, adapté aux mobiles et aux tablettes, bien conçu pour la lecture.

L’essentiel tient aussi en un détail : maîtriser la solution technique. Je suis désormais suffisamment à l’aise avec l’outil pour m’en servir au quotidien et gérer les problèmes que je peux rencontrer. La majeure partie de mon activité est désormais le journalisme. Mes lecteurs me paient pour écrire et pour les informer, pas pour coder des choses inédites. Ils veulent que je les informe sur l’actualité politique et parlementaire. Ils se fichent de savoir si je rêve de PHP la nuit.

Roadmap pour une migration Drupal 7 vers WordPress

Je vous souhaite de ne jamais avoir à faire une migration en catastrophe. Mais, partons du principe que vous devez la faire à l’arrache.

  • Listez les fonctionnalités essentielles pour vous. C’est à partir de cette liste que vous choisirez vos extensions.
  • Faites un budget : si vous avez besoin de certaines fonctionnalités, vous devrez acheter les extensions. Elles ont souvent des licences annuelles.
  • Listez vos contenus et vos types de contenus. En fonction de vos types de contenus, vous devrez peut-être créer des champs.
  • Sauvegardez et copiez votre site Drupal. Vous exportez votre base de données, vous lancez HTTrack et vous faites une copie de votre site. Cela vous permettra de vous souvenir de ce que vous avez fait. Isolez également votre dernière sauvegarde Backup And Migrate, car, évidemment, vous avez installé Backup And Migrate sur votre Drupal.
  • Vous achetez FG Drupal to WordPress et vous installez un WordPress tout nu. Votre achat est rentabilisé et vous pouvez vous en servir sur autant de sites que vous le souhaitez. Une fois votre WordPress installé, vous avez le choix : soit acheter ou installer un thème déjà fait et lancer l’import des contenus du thème ou faire comme j’ai fait, à savoir importer les contenus avec FG Drupal to WordPress, les exporter, faire un hard reset, installer le thème et importer les contenus (les vôtres).
  • Une fois les contenus migré, faites une sauvegarde. Installez les extensions complémentaires dont vous avez besoin.
  • Vérifiez vos redirections, vos liens cassés, vos illustrations.
  • Travaillez le référencement si vous le souhaitez.

On dit souvent que lorsqu’on prépare un projet, on doit prendre le temps et le budget consacré pour ensuite le multiplier par trois. Dans mon cas, j’ai divisé par trois le temps. Quant au budget, j’étais partie pour prendre un abonnement dans un magasin d’extension et finalement, je n’ai acheté qu’un thème. Je m’en suis plutôt bien sortie, mais je dois aussi préciser un point : j’ai travaillé sur cette migration, tous les jours, sans interruption, durant trois semaines complètes, de midi à 2 h du matin.

Autant vous dire que je suis soulagée que ça soit enfin terminé.