Wordpress

Antimoine, livres rares et anciens

Antimoine Livres rares et anciens
Réalisation du site de la librairie quimpéroise Antimoine, intégration de plusieurs milliers d’ouvrage dans le catalogue consultable sur le site éponyme.

Importer en masse des articles dans wordpress

Objectif

WordPress est à la fois un des CMS les plus puissants du marché et le plus simple d’utilisation pour des non-programmeurs. Un des derniers projets de cette année pour designer fonctionnel fut la migration du site d’une librairie. L’ancien site est entièrement en HTML, très statique, pas assez fréquenté, pas détecté par les moteurs de recherche.

Le site à mettre en place doit permettre de:

  • présenter lintégralité du catalogue, soit près de dix mille références,
  • remonter dans les SERP pour des mots clés génériques tels que livres rare et anciens, joli challenge mais parfaitement jouable,
  • présenter un design plus moderne en restant sobre, ainsi que d’autres objectifs qui n’ont pas d’intérêt dans ce post.

WordPress semble parfaitement adapté à ce cas, le transfert de compétences au client est facilité à l’aide de son interface d’utilisation relativement simple. Ainsi cette solution est choisie. Or toute solution amène de nouvelles questions, la principale est :

Comment intégrer dix mille éléments dans son site WordPress, sous quelle forme et par quel biais sans perdre une éternité ni faire tomber le serveur?

Cet article décrit l’ensemble des étapes à réaliser pour répondre à cette question, a savoir permettre d’intégrer plusieurs milliers d’articles dans un WordPress en y passant quelques heures au maximum. Un premier élément de réponse dans cette phrase: chaque élément est publié dans un article. Ces éléments sont des livres.

Pré requis

Les conditions nécessaires pour ces opérations sont:

Disposer d’un espace où est installé un WordPress, vide, sur un serveur mutualisé ou dédié, avec les extensions qui suivent,

Wp Ultimate CSV Importer: plugin nécessaire pour importer des articles en masse depuis des fichiers CSV,

CSVSplitter: pour fragmenter en partie égales un gros fichier CSV,

WP delete post: pour pouvoir supprimer directement des centaines de post sans passer par la corbeille et sans faire planter la requête.

La méthodologie d’import en masse en 17 étapes simples

Les étapes suivantes permettent d’intégrer pas à pas plusieurs milliers d’articles dans son WordPress.

  1. disposer d’un fichier Excel contenant tous les articles répartis par colonne, avec éventuellement des champs spéciaux,
  2. Modifier les tableaux de données pour le faire correspondre avec un format générique d’articles,
  3. le convertir en .csv,
  4. modifier les caractères spéciaux et accentués en code html, par exemple, chaque è doit être remplacé par é
  5. diviser le fichier csv en plusieurs fichiers contenant un nombre acceptable de lignes pour le serveur,
  6. importer les fichiers par groupe sur un serveur, en local si ça passe, sur un mutualisé ou un dédié si possible,
  7. après chaque groupe importé, exporter en xml le contenu,
  8. tout supprimer,
  9. importer un nouveau groupe de fichiers, faire l’export et ce jusqu’à épuisement des fichiers csv,
  10. une fois tous les exports obtenus, en local, importer en local les fichiers xml issus des exports, un par un,
  11. au besoin, diviser les xml en fichiers plus petits pour permettre l’import sans faire planter le post,
  12. un fois fini, aller dans phpmyadmin et exporter toute la base dans un fichier sql,
  13. ceci fait, diviser le fichier sql en sous fichier, pour fragmenter l’énorme requête obtenue en plusieurs plus petites,
  14. se connecter à phpmyadmin sur le serveur de prod,
  15. copier/coller du contenu des différents fichiers contenant le code sql,
  16. une fois terminée, uploader en ftp la dernière version de WordPress en conservant le fichier wp-config-sample,
  17. se connecter au site et suivre les instructions d’installation en valorisant les informations demandées, i.e installer normalement wordpress
  18. L’installation est terminée, accéder alors à l’interface de gestion des thèmes, des pages, des widgets et tout le reste!
  19. Have fun

En détail, avec un exemple d’application

Étape 1: disposer des données à intégrer dans un tableau

Que ce soit sur Excel ou OOO, il faut disposer de toutes les données dans un tableau. Par exemple:

Tableau des données à intégrer

Ce tableau est composé de plusieurs colonnes:

  • Numéro: identifiant de l’ouvrage dans le catalogue,
  • Titre: celui de l’ouvrage,
  • Description de ce dernier,
  • L’auteur,
  • mot clé,
  • Thème et
  • le prix.

Étape 2: Modifier le tableau

Il faut pouvoir intégrer ces données dans un article, et donc pouvoir les structurer de manière à faire correspondre les informations disponibles à celles que peut héberger un article WordPress. L’usage de champs personnalisés – les custom fields -  est à considérer, mais pas forcément pour toutes les données. Ici, en l’occurrence:

Titre de l’article: c’est un extrait des N premiers caractères du titre complet. Certains titres à rallonge peuvent nuire à la présentation de chaque article. Ainsi, le titre doit être créé dans une nouvelle colonne, chaque cellule doit contenir la formule suivante: =STXT(B2;1;36) & “…” et ce pour toute la colonne. Cette formule permet de tronquer chaque titre et de ne faire apparaître que les 36 premiers caractères.

Contenu de l’article: il doit présenter les données de chaque ouvrage:

  • son numéro,
  • le titre complet,
  • la description et
  • l’auteur.

Le prix sera intégré dans un custom field.

Il faut créer une colonne supplémentaire, dans la quelle la formule suivante doit être valorisée:

= ” A2 & ” ” & B2 & ” ” & C2 & ” ” & D2 de 2 à 10 001

On a alors une simple concaténation des champs qui permet la restitution des données brutes de chaque cellule séparées par un espace. Il est possible d’améliorer la présentation en incorporant un peu de HTML en mettant à la ligne les infos, par exemple:

= ” A2 & “<br/>” & B2 & “<br/>” & C2 & “<br/>” & D2

Puis finalement, il est possible de rajouter du texte générique valable pour chaque cellule et donc chaque article:

= “Référence de l’ouvrage : ” & A2″</br><b>Titre complet de l’ouvrage : <b>” & B2 & “”<br/><b>Description : </b>” & C2 & “<br/><b>Auteur : </b>” & D2 &  “<br/>

C’est customisable à l’infini en rajoutant des balises css, etc. Le contenu de chaque article est maintenant disponible dans une cellule.

Mot clé: on laisse tel quel. Dans le cas où il y a plus d’un mot clé, ils doivent être séparés par des virgules.

Catégorie: idem, on laisse tel quel. Dans le cas de catégories multiples, elles doivent être séparées par un pipe: | (alt gr 6) e.g catégorie 1 |Catégorie 2. Dans notre cas, on fait correspondre la colonne thème aux catégories de WordPress, qui seront créées lors de l’import du fichier.

Prix: c’est le seul custom field, pour l’instant. Idéalement, on rajoute € à la fin ou au début, c’est selon, mais cela doit être fait, pour ne pas se retrouver avec le prix sans unité.

Finalement, on arrive à ce fichier:

Tableau de données - prêt pour la conversion en csv

 

Étape 3: créer le csv initial

Depuis le tableau de données, il faut extraire celles qui seront à importer. Pour obtenir:

Sélection des données pour export csv

Ceci fait, il ne reste plus qu’à enregistrer le fichier CSV. Théoriquement, il doit faire plusieurs mégas. Il ne vaut mieux pas essayer de l’uploader en entier, l’échec est quasiment assuré. Même en local, c’est très très lourd.

Étape 4: Modifier les caractère accentués et spéciaux en HTML

L’ensemble des caractères spéciaux présents dans les différents éléments de votre csv doivent être convertis en HTML sous peine de voir chacun de ces caractères comme ceci: Ã¨ pour le è… Si l’import donne lieu à de tels caractères corrompus, alors il faut soit recommencer soit faire une requête spécifique pour chaque colonne, du type:

UPDATE NOM_DE_LA_TABLE SET NOM_DE_LA_COLONNE = replace(NOM_DE_LA_COLONNE, ‘è’, ‘è’);

Étape 5: diviser le fichier csv en plusieurs fichiers plus petits

Pour cela l’outil le plus efficace, à par le temps, c’est CSVSplitter, cité en début d’article. Nécessaire pour diviser les énormes fichiers csv. Il est plus dédié à la division de fichiers de plusieurs Go, pour permettre leur intégration dans un tableur. Le nombre idéal de lignes pour chaque fichier dépend de votre serveur, il est directement lié à la taille des fichiers csv résultants. Il faut connaître la limite, puis se placer 20% en dessous. Dans le cas présent, il n’était pas possible d’importer des fichiers contenant plus de 500 lignes. En paramétrant à 400, les imports par lot se sont bien déroulés. Tout cela est expliqué dans la suite. Il existe un outil, csv2sql, mais encore une fois, il faut alors modifier la requête SQL obtenue pour la faire correspondre avec ce qu’attend WordPress. Cela peut induire trop de tâtonnement et de tests. Cette solution n’a pas été privilégiée.

 

Étape 6: import par lot

Il faut maintenant importer les fichiers, les uns après les autres, jusqu’à atteindre la limite. Par exemple par lot de 5 fichiers donc 2000 lignes, donc 5 lots d’imports au total. L’import se fait naturellement par WP Ultimate CSV Importer. Pour la méthode, tout est clair dans les FAQ de la page du plugin.

Étape 7: export xml depuis les outils natifs de WordPress

Une fois qu’un lot de cinq fichiers est importé, signifiant 2000 articles, il faut les exporter à l’aide des outils présents dans l’administration.

Étape 8: supprimer les articles une fois l’export terminé

Après chaque export, pour repartir de zéro, il faut supprimer tous les articles du site. D’où l’intérêt du plugin “WP delete post” cité au début de cet article.

Étape 9: recommencer les opération d’import de csv et d’export

Il faut répéter les opération d’import, d’export et de suppression autant de fois qu’il est nécessaire pour obtenir tous les fichiers XML obtenus lors des exports successifs.

Étape 10: import en local

Après avoir installé un tout nouveau WordPress en local, il est possible d’importer les énormes fichiers XML obtenus. Les uns après les autre. Une fois qu’ils sont tous importés, le nombre d’articles dans le site doit être égal à 10 000.

Étape 11: diviser les XML

Cette étape est facultative si les fichiers sont chargés sans problème dans le site. Sinon, il faut penser à les diviser par deux ou trois. Aisément faisable à la main. Pour ce faire, il suffit d’ouvrir ces fichiers et de les diviser, la structure récurrente des données est aisément interprétable.

Étape 12: Export depuis phpmyadmin

Une fois tous les imports terminés, accéder au phpmyadmin du site, pour exporter la totalité de la base dans un fichier SQL. Le fichier obtenu est supérieur à la dizaine de Mo. Soit il est possible avec le support de l’hébergeur du site de votre client de leur faire intégrer le fichier dans la base du site, soit il faut procéder pas à pas, comme expliqué ici.

Étape 13: diviser le fichier SQL de l’export

Pour le diviser, il faut procéder en découpant dans le bon sens le fichier, en coupant entre chaque requête, sous peine de surprises désagréables.

Étape 14: se connecter au phpmyadmin de prod

Accéder à l’onglet SQL dans la base cible.

Étape 15: copier coller les requêtes

Dans l’ordre, copier coller le contenu des fichiers contenant tous les fragments de la requête initiale.

Étape 16: chargement d’un WordPress

Se connecter en ftp au site de prod et charger la dernière version de WordPress. Laisser le fichier wp-config-sample tel quel. Il faut chercher à faire l’installation du site sans créer le fichier wp-config. Autrement dit faire une installation habituelle d’un WordPress.

Étape 17: se connecter au site et suivre l’installation

Accéder au site, l’installation peut commencer.

Étape 18: L’installation est terminée, mettre à jour le thème

Pour finir, mettre à jour le thème. Cela corrige ou anticipe le blocage du site public sur une fenêtre blanche.

Étape 19: Have fun

Alternatives

Il existes des alternatives comme par exemple créer une requête SQL depuis un fichier excel dont les colonnes sont parfaitement formatées, contiennent l’exhaustivité des champs nécessaires et leur valeurs,… Pour un non développeur, ce genre d’opération à la base censée accélérer l’import des articles peut s’avérer finalement plus chronophage que ces multiples étapes.

A moins d’être bon en sql, cette méthode pas à pas permet d’intégrer des milliers d’articles pour un temps relativement minimum lorsque l’on n’est pas développeur. Les opérations présentées ici sont relativement basiques pour tout pratiquant de WordPress.

 

Les Content Management System: CMS

Ou comment créer un site en quelques clics (dans le meilleur des cas).

Le meilleur CMS

C’est une chimère. Il n’existe pas de meilleur CMS dans l’absolu. Un CMS ne peut être évalué que dans la cadre d’un objectif particulier, correspondant à un besoin clairement défini.

Une carte des CMS permet d’avoir une visualisation globale de ces derniers. Du moins pour les plus importants.

Cartographie des CMS

Source: http://www.realstorygroup.com/

 

Utilisation des CMS

On peut voir sur ce site la proportion d’utilisation des principaux CMS.
On s’aperçoit que WordPress arrive en tête de liste, mais que principalement (pour près de 70% des sites) ils sont entièrement développés sans utilisation de CMS.

CMS vs développement dédiés

Les CMS sont des outils très puissants et performants pour permettre de gérer du contenu en ligne. Néanmoins, les sites et outils développés spécifiquement restent majoritaires.

Le choix entre l’une des deux solutions doit être orientée en fonction du besoin du client. Est-il suffisamment générique ou trop spécifique? Cette information est un premier indicateur pour faire le choix de la solution.

Quoi qu’il en soit les CMS sont des outils puissants qui permettent de ne pas réinventer la roue à chaque fois.

Présentation

Le design fonctionnel est le pont entre un besoin et sa réalisation.
Construire ce pont demande:
d’analyser ce besoin,
de le formaliser,
puis de le valider.
Ces trois étapes améliorent le respect des délais, des coûts et de la qualité finale de la solution à réaliser.