Comment j'ai nettoyé, réparé et migré 17 000 articles de blog Wordpress
Salut tout le monde,
Après l’annonce de ma migration vers o2switch, je continue ma série d’articles concernant la nouvelle version de mon site. Et aujourd’hui, on va parler de la première étape que j’ai dû franchir : migrer le Wordpress.
Comme vous l’avez surement oublié, c’est en 2007 que j’ai migré du CMS Spip vers le CMS Wordpress. Ça fait donc 17 ans que j’utilise ce CMS, et je l’adore. Pas question pour moi, donc de changer de CMS.
J’ai donc décidé de garder Wordpress, mais uniquement pour le backoffice. Le front étant géré par un outil de génération de pages statiques nommé Hugo. Pour ce dernier, j’y reviendrais plus tard.
Seulement voilà, mon Wordpress était tellement custom, que simplement exporter un SQL et l’importer de l’autre côté sur le nouveau serveur o2swich, ça n’allait pas être simple. J’ai donc utilisé l’outil en ligne de commande WP CLI pour faire un export du contenu de mon site. Je vais quand même vous donner les lignes de commande, ça fera un peu tuto pour ceux qui veulent comme moi, migrer leur site vers o2switch.
Placez-vous dans le dossier de votre Wordpress, puis faites :
wp export --dir=/chemin/vers/dossier/
Et là, bien sûr, j’ai eu quelques crashs sur des articles mal fichus (au bout de 20 ans rien d’étonnant). J’ai donc corrigé mes articles problématiques pour au final me retrouver avec des XML contenant l’intégralité de mon contenu. C’est exactement ce que je voulais, un contenu relativement propre, prêt à être importé dans un nouveau Wordpress.
Ensuite, je me suis dirigé vers mon interface Cpanel o2switch en me disant que j’allais, à l’ancienne, devoir tout configurer… À savoir Apache2 / Nginx, PHP, MySQL…etc. Mais ils sont tellement fort chez o2switch, que je n’ai pas eu besoin de faire ça. J’ai simplement cliqué sur leur outil WP Tiger pour me créer un nouveau site tout frais tout propre Wordpress :
Ensuite, j’ai juste eu à suivre l’assistant et hop, j’avais un Wordpress vierge bien configuré, sécurisé, sur la bonne adresse et les extensions et le thème de mon choix.
Bon, le thème, je m’en fiche un peu puisque je vais m’en servir qu’en version “headless” on va dire, mais au moins, j’ai gagné du temps et je ne me suis pas pris la tête.
Une fois que le Wordpress est en place, WP Tiger propose pleins d’outils pour faire de l’analyse de logs, forcer le HTTPS (j’y reviendrais), optimiser la base, y accéder via phpmyadmin, mais aussi gérer vos utilisateurs, choisir votre thème, vos extensions, renforcer la sécurité…
… ou encore, créer des sauvegardes de votre Wordpress, mettre en place une pré-production, analyser les perfs du site et mettre en place du cache et des optimisations, sans oublier des actions avancées comme changer l’adresse du site. Et ça si vous l’avez déjà fait, vous savez que c’est galère alors avoir un outil qui le fait pour nous, c’est top !
Donc déjà, c’était la première bonne nouvelle me concernant, car je n’ai pas eu besoin de mettre trop les mains dans le cambouis côté Wordpress.
Ensuite, évidemment, j’ai dû réimporter tous mes XML pour remplir la nouvelle base côté o2switch :
wp import /chemin/vers/fichier/*.xml --authors=create
Cela va réinjecter dans la base de données, tous le contenu de votre site et créer les utilisateurs qui vont bien. Ici encore, j’ai eu quelques crashs à cause de certains articles anciens et mal formatés. J’ai donc édité les XML à la main à certains endroits et j’ai finalement tout importé.
Me voici donc avec un Wordpress lambda qui contient tous mes articles. Cool !
S’en est suivi ensuite pendant quelques semaines en juillet à un jeu d’optimisations de ma base de données. Parce que dans ma base, j’ai des articles pourris au niveau du HTML, j’ai des articles sans tags, des articles sans images…etc.
Et surtout, j’ai revu toutes les catégories. Donc j’ai du tout re-catégorisé automatiquement. Et pour cela, j’ai appelé mon amie IA au secours.
N’étant pas développeur, grâce à Cursor et principalement à l’IA Claude d’Anthropic et ChatGPT d’OpenAI dans une moindre mesure, je me suis développé des dizaines de plugins très spécifiques pour corriger tous ces soucis.
Voici une partie de la liste de ce que j’ai dev pour nettoyer mon Wordpress :
- Détecteur de liens avec espaces : Liste tous les articles contenant des liens avec des espaces dans l’attribut href.
- Détecteur de contenu court : Liste tous les articles ayant moins de caractères de contenu que le seuil défini.
- Détecteur d’articles avec images à la une manquantes : Liste tous les articles qui ont une image à la une, mais dont le fichier image n’existe plus sur le serveur.
- Auto-Tagger d’Articles : Analyse automatiquement les articles et suggère des tags appropriés en utilisant l’API ChatGPT.
- Nettoyeur de paragraphes vides : Supprime automatiquement les paragraphes vides des articles WordPress.
- Convertisseur d’URL Vidéo Convertit les URL vidéo relatives en URL absolues dans le contenu des publications de manière permanente via une interface d’administration.
- Détecteur d’Emoji dans les Slugs : Liste tous les articles dont le slug contient un emoji.
- Détecteur d’articles sans image à la une : Liste tous les articles qui n’ont pas d’image à la une.
- Détecteur de contenu vide : Analyse automatiquement les articles à la recherche de contenu vide et affiche les résultats.
- Edito Title Changer : Utilise l’IA pour générer et changer les titres des articles dans la catégorie “Édito de Korben”.
- Correcteur d’encodage : Corrige automatiquement les problèmes d’encodage des articles WordPress.
- Détecteur d’images inaccessibles : Liste tous les articles dont l’image à la une ou les images dans le contenu sont inaccessibles.
- Réparateur d’Images cassées : Répare automatiquement les liens d’images cassées en les téléchargeant et en les réuploadant.
- Gutenberg Activator : Corrige les blocs embed YouTube dans les articles qui en contiennent.
- Détecteur d’Images spécifiques : Analyse les articles d’un site externe pour trouver des images spécifiques au format webp et les associe aux articles WordPress.
- Featured Image Updater : détecte les articles dont le premier objet est une image de 650x200 pixels (avec une tolérance de 2 pixels) et la définit comme image à la une.
- Analyseur d’images à la une au format WebP : Analyse toutes les images à la une et liste celles qui ne sont pas au format WebP.
- Auto-Catégoriseur d’Articles : Analyse automatiquement les articles et suggère une catégorie appropriée en utilisant l’API ChatGPT.
- Recherche d’Articles “Comment” : Liste tous les articles du blog dont le titre commence par “Comment” ou “comment”.
- Boulette Cleaner : Nettoie les balises fermantes indésirables au début des articles.
On m’a bien sûr déjà demandé de mettre ça sous licence libre sur Github. Sur le principe, je suis OK, mais je n’ai pas le temps. Pas le temps de faire un code propre et universel (je suis dans du très spécifique souvent), pas le temps ensuite de gérer les issues et autres pull requests…etc. Donc désolé, mais ce ne sera pas possible.
Grâce à tous ces petits plugins, j’ai donc pu détecter les problèmes, re-catégoriser automatiquement tous mes articles (+20 000), corriger des structures HTML cassées, et générer environ 3 000 images avec Dall-e 3 (que je trouve un peu moche, mais on s’en fout) pour des articles qui n’avaient pas d’illustration.
Quand je dis quand même que je ne suis pas développeur, je veux dire que ce n’est pas mon job ni ma passion, que ça m’obsède vite jusqu’à en perdre le sommeil, que je suis un peu nul là-dedans, mais que j’aime quand même bien créer des choses et que je comprends quand même mon code. Donc passer par l’IA c’est pour moi le moyen parfait pour réaliser tous mes rêves de code, en toute autonomie, et rapidement.
Je vous rassure quand même tout n’est pas rose. Parfois l’IA ne comprend pas tout ou crée des effets de bord qui viennent foutre le bordel après coup. Donc ça demande quand même du temps de cerveau pour la cadrer, ne pas prendre bêtement tout ce qu’elle donne et beaucoup de tests aussi.
Mais je m’en suis sorti. Toute cette migration, je l’ai réalisée avec l’IA. J’y reviendrais dans les prochains articles où je parlerai d’exports markdown et d’Hugo, le générateur de sites statiques.
Évidemment à chaque gros changement en base de données, j’ai exporté la base via phpMyAdmin directement via le cpanel de o2switch, histoire de ne pas tout flinguer.
Puis toujours dans cpanel, j’ai pu générer un certificat SSL pour avoir du HTTPS via Let’s Encrypt, ce qui est vraiment très simple. Et comme le plugin Wordpress Really Simple Security est pré-installable et supporte sans problème o2switch, la mise en place du certificat s’est faite très vite et une fois encore sans prise de tête.
Et voilà un peu par quoi je suis passé pour avoir un joli backoffice Wordpress, une base relativement propre, avec des articles bien illustrés et bien catégorisés, même si j’ai encore un peu de boulot dans certains vieux articles.
Concernant o2switch, j’ai trouvé leur outil WP Tiger très facile d’accès pour les débutants, donc c’est un vrai plus si vous voulez déployer du Wordpress. Après si vous avez besoin d’autres scripts comme un Joomla, Matomo, Prestashop et j’en passe, c’est tout aussi simple puisqu’ils proposent Softaculous, un store d’outils open source qui permet de déployer les outils de votre choix sur votre serveur hyper simplement.
Pour rappel, o2switch, c’est 3 offres dont la première “L’offre unique” démarre à 2,59 € HT par mois. Alors, pourquoi se priver ?