De Wordpress à Spip : un tutoriel, 3

La méthode

jeudi 8 décembre 2016, par ID

Aucune connaissance SQL n’est requise pour injecter ses données dans la base de données SPIP. On utilise les logiciels bureautiques pour ce faire pour faire correspondre les champs de la ou des tables voulues avec celles de SPIP avant d’en ajouter le contenu.

Dans le cadre de ce site, je ne me suis préoccupée que de la table articles. Mais le procédé est le même pour les autres tables si vous le désirez. Tout se fait en local bien sûr et le site en production reste en ligne normalement.

 Récupération des données du site Wordpress

Récupérer la table via phpMyAdmin. Pas besoin de plugin de sauvegarde de Wordpress, j’aurais même tendance à le déconseiller.

Récupérer le contenu du dossier wp_content/upload par ftp.

Installer Wordpress en local, y injecter la table récupérée. À partir de là, on n’utilisera plus Wordpress.

 Préparation du site SPIP

Installer SPIP et configurer le contenu : surtitre, titre, sous-titre, etc. C’est plus simple de cocher tous les champs même s’ils ne serviront pas.

Créer les rubriques [1]. Pour travailler plus facilement par la suite, je suggère d’en dresser la liste avec leur numéro sur une feuille de calcul. Si vous ne disposez pas de deux écrans, imprimez cette liste pour travailler plus facilement.

Écrire un article et le mettre en ligne. Comme il sera effacé par la suite, son contenu et sa qualité importent peu.

À ce stade, il n’est pas nécessaire de mettre le site en forme, ça peut aider par la suite, c’est une question de fonctionnement personnel.

 Ordre des colonnes des tables

Je ne me suis occupée que de la table post (Wordpress) – articles (SPIP). Mais la méthode est la même, au besoin, pour les autres tables.

Dans phpMyAdmin, Exporter la table post de Wordpress et la table articles de SPIP.

Au niveau de Méthode d’exportation, cocher l’option Personnalisée.

Méthode d’exportation
Afficher toutes les options possibles.

Choisir un format nous permettant de travailler cette table dans un tableur, par exemple, le format OpendDocumentSpreadsheet.

Export de la table
Choisir par exemple le format OpenDocument Spreadsheet.

Ne pas oublier de cocher Afficher les noms de colonnes en première ligne dans les Options spécifiques au format. C’est ce qui nous permettra de configurer les colonnes de la table Wordpress exactement comme celles de SPIP et donc de récupérer les données.

Options
Afficher les noms de colonnes.

Ouvrir les deux fichiers : celui de la table SPIP et celui de la table Wordpress. Si vous n’avez qu’un écran et pas très grand, il est peut-être préférable d’imprimer la table articles de SPIP et de ressaisir les noms des colonnes, sinon on peut les copier-coller.

Organiser les colonnes de la table de Wordpress de façon à ce qu’elles soient exactement dans le même ordre que celles de la version SPIP et avec très exactement les mêmes noms. Il faudra donc :

  • ajouter des colonnes ;
  • renommer celles existantes ;
  • copier-coller le contenu de certaines colonnes dans les nouvelles pour qu’il soit à la même place que dans la table SPIP ;
  • supprimer les colonnes qui ne sont pas à la bonne place.

Sur les captures ci-dessous, on voit qu’il faut renommer la première colonne de la table Wordpress et bouger les autres.

Table posts de Wordpress
Les intitulés des premières colonnes de la table posts.

Dans SPIP la première colonne s’appelle id_article contre ID dans Wordpress, le contenu (post_content dans Wordpress, texte dans SPIP) n’est pas à la même place.

Table articles de SPIP
Les premières colonnes de la table articles.

 Correction du contenu

Utiliser les fonctionnalités de filtre de votre tableur pour aller plus vite ainsi que les Rechercher-remplacer.

Statut des articles : un article publié est marqué comme publish dans Wordpress, colonne post_status et publie dans SPIP, colonne statut. En filtrant par statut et en utilisant la fonctionnalité Remplir la modification se fait en un rien de temps.

Rubriques  : colonne id_secteur, personnellement je les ai ajoutées « à la main » étant donné que je voulais réorganiser le contenu. J’avais donc d’un côté ma liste numérotée de rubriques, de l’autre ma table d’articles. Avec un seul écran, surtout s’il n’est pas grand, je suggère d’imprimer cette liste pour travailler plus confortablement.

Contenu à effacer ou remplacer : Wordpress a pu ajouter des noms de class dans les posts, mais pas toujours. J’ai fait une petite liste, pas exhaustive, des trucs à supprimer ou à remplacer, par exemple <p class='western'> doit être remplacé par <p> pour garder les paragraphes. On peut garder certaines balises, par exemple <ul> et <li> sauf si on veut utiliser à la place les raccourcis de SPIP on aura donc -# à la place de <ul> et on remplacera <li> par -*.

  • <ul></ul>
  • <li class='western'> </li>
  • <p class='western'>
  • <p class='western' align='left'>
  • <span style='font-weight: normal;'>
  • <span></span>
  • <strong></strong> par {{ et }}
  • <h1> </h1> par {{{ et }}}
  • [toc], ou son équivalent en fonction de votre site, si vous aviez un plugin table des matières.

Format des dates : quand on importe la table dans le tableur, les dates sont automatiquement transformées en texte avec une apostrophe droite, caractère Unicode 0027, qu’il faut absolument éliminer. Pour une raison qui m’échappe, je n’ai pas pu le faire dans le tableur. Dans ce cas, copier-coller le tableau en texte non formaté dans un traitement de texte, convertir le texte en tableau, sélectionner la colonne avec les dates et remplacer l’apostrophe. [2] Au besoin cocher Expressions régulières dans le module de recherche. Repasser, le cas échéant, la table dans le tableur [3] et formater les colonnes de date de cette façon, c’est impératif : AAAA-MM-JJ HH:MM:SS sinon cela va poser des problèmes. [4]

Au sujet des dates, de Wordpress, je n’ai gardé que le contenu de la colonne post_date (date dans SPIP) que j’ai ensuite, une fois bien mise en forme, copié-collé dans les autres colonnes de date de la table articles de SPIP. À vous de voir.

Les médias considérés comme dans articles, et autres joyeusetés : on peut les supprimer en supprimant les lignes concernées du tableau, mais… attention, j’ai ainsi également supprimé des articles que je voulais garder. On y va doucement, c’est autant de temps gagné par la suite.

Enregistrer la feuille de calcul, ici au format OpenDocument Spreadsheet. [5]

 Intégration de la table dans SPIP

Repasser dans phpMyAdmin. Supprimer l’article « exemple » qu’on a fait dans SPIP. Aller sur Import.

Au niveau de Format, sélectionner OpenDocument Spreadsheet dans la liste déroulante [6].

Ne surtout pas oublier de cocher les cases La première ligne du fichier contient le nom des colonnes de la table et Ne pas importer les lignes vides si elles ne le sont pas. Laisser les autres options.

Options spécifiques au format
Choix et options du format OpenDocument Spreadsheet.

Cliquer sur le bouton Exécuter. Les données se mettent en place dans une nouvelle table qui ne peut pas fonctionner correctement avec SPIP.

Pour copier ensuite le contenu de cette table dans la table spip_articles, la sélectionner et aller sur Opérations. Descendre jusqu’à Copier la table vers et indiquer le nom de la base (ici spip) et de la table d’accueil (ici spip_articles). Cocher l’option Données seulement et appuyer sur Exécuter.

Copier la table
Dans Opération, Copier vers pour insérer les données.

 Les médias et les liens

Cela va demander du retravail, essentiellement les images, les liens internes et les notes. Là, pas le choix il faut balayer article par article.

Pour les médias et documents le problème est double. D’une part, la structure des dossiers images, surtout quand on a laissé Wordpress s’en occuper comme moi, est très différente de celle de SPIP. D’autre part, les balises d’insertion des images varient selon leur mode d’insertion, voire la période d’insertion, Wordpress ayant pas mal changé en quelques années. On obtient donc un affichage en partie publique de ce style :

Image dans le texte
Au lieu d’être au centre, l’illustration est dans le texte.

Ou encore cela, où on a carrément le code html :

Pas centrée et avec ses balises
Non seulement l’illustration n’est pas centrée, mais son code d’insertion est affiché.

Bref, la seule « solution » que j’ai trouvée, consistait à les réintégrer, image par image, ce qui a pris du temps. Avantage, elles sont rangées proprement dans la médiathèque du site. Sinon il aurait fallu garder, en sus du dossier IMG de SPIP, les dossiers originaux de Wordpress. Garder la structure des dossiers pour réintégrer les illustrations s’est révélé un gain de temps précieux [7].

S’il n’est pas nécessaire de « spiper » les liens externes, en revanche, il est préférable de le faire pour les liens internes. Cela est utile pour la vie du site. En effet, les liens de Wordpress sont « en dur », ceux de SPIP qui font référence aux numéros des articles sont plus dynamiques.

Et enfin les notes, avec le plugin que j’avais, elles étaient indiquées sous cette forme [1. texte note.], [2. texte note.], il est sans doute envisageable de les modifier en traitement de texte (avec Writer en tous cas) en utilisant les Rechercher-Remplacer avec les Expressions régulières. Mais c’est assez délicat à manier. Donc à vous de voir.

 Référencement, trafic, ça se passe comment ?

Cela dépend des configurations des URLs dans Wordpress et dans SPIP.

Dans Wordpress, lorsque les adresses ont été configurées sous la forme http://adresssedusite/titre-article,

Adresse dans Wordpress
Paramétrage des adresse des articles.

les moteurs de recherche vous trouveront sans problème à condition :

  1. de configurer les URLs Propres dans SPIP ;
  2. de cocher, le cas échéant, la case Activer la gestion avancée des URLs pour modifier les URLs afin qu’elles soient identiques à la version Wordpress, si vous les aviez modifiées de temps à autre ;
  3. et enfin, de configurer le nombre maximum de caractères, toujours dans cette même page de configuration.

Astuce  : pour calculer le nombre maximum de caractères adéquats sans risquer d’abréger vos URLs, compter le nombre de signes (caractères plus espaces) des titres qui vous paraissent les plus longs. Ils vous serviront « d’étalon ».

Personnellement, je n’ai pas constaté de baisse de trafic. En fait, la seule perte de trafic qu’on peut avoir concerne ce que j’appelle le « trafic parasite », celui qui pointe uniquement sur les images et documents sans aller sur le site lui-même. Et ça, je ne trouve pas ça regrettable du tout.


Voir aussi :


[1Il est sans doute possible de récupérer la structure des catégories du site Wordpress, mais j’ai préféré réorganiser le site qui était bien désordre.

[2Si elle apparaît, personnellement je ne l’avais pas.

[3Un copier-coller suffit.

[4Testé et vérifié avant vous.

[5Privilégier les formats ouverts en règle générale.

[6Ou le format de votre table si vous avez fait un autre choix.

[7J’ai testé les deux versions…