Importation automatique des titres et légendes des images dans WordPress

5 Nov 2017

Bonjour tout le monde,

Je voudrais vous montrer aujourd’hui comment spécifier le titre et la légende d’une image de type JPG dans le fichier image lui-même, afin qu’ils soient positionnés automatiquement dans les champs « Titre » et « Légende » lors de l’upload dans WordPress.

Ce procédé est devenu indispensable pour moi lors de la création de galeries ou diaporamas avec un grand nombre d’images et nécessitant d’afficher titres et/ou légendes.

Evidemment il permet également de conserver ces informations là où elles doivent être ! Pas de fichier externe, pas de risque de les perdre en chemin, une logique sans faille !

Import de fichiers en masse avec titres et légendes

Le problème est donc le suivant… Lorsque mon client favori me fournit plusieurs dizaines d’images, accompagnées d’un fichier contenant la liste des noms de fichiers JPG et les légendes associées, il m’est complètement insupportable de devoir faire des copier-coller pour renseigner ces informations pour chaque image importée dans la bibliothèque de WordPress.

Je me suis donc mis en quête d’automatiser le positionnement de ces informations pour que les images puissent être directement intégrées aux galeries sans aucune action manuelle de ma part.

WordPress et les métadonnées IPTC

Etant photographe amateur, je me suis naturellement tourné vers les métadonnées stockées dans les fichiers images (EXIF, XMP, IPTC…). Et de toute façon je ne voyais pas d’autre façon de transmettre les infos !

J’ai ainsi découvert que deux métadonnées de type IPTC étaient récupérées par WordPress lors de l’import, et lui servaient à peupler automatiquement les champs « Titre » et « Légende » : les tags « Headline » et « Caption-abstract ».

Il ne restait plus qu’à renseigner ces étiquettes en masse dans les fichiers images 😉

Remarque : version graphique ou ligne de commande ?
Dans cet article, je me penche sur l’aspect traitement par lot car je dois traiter un grand nombre d’images, donc j’ai adopté une solution en ligne de commande. Sachez cependant qu’il est possible de renseigner ces métadonnées avec une interface graphique via des logiciels comme XnView (excellent et gratuit) ou Lightroom.

Les héros du jour : Exiftool et PowerShell !

En ce moment, je découvre PowerShell et je l’aime bien, donc c’est lui que je vais utiliser pour automatiser le traitement. Et pour renseigner les infos IPTC en ligne de commande, rien de mieux que le gigantesque couteau suisse de l’imageExiftool.

Le fichier d’entrée

Le fichier fourni par le client est un fichier Word que je convertis en texte (legendes.txt) et que je place dans le répertoire contenant les images :

Image01.jpg La légende de la première image
Image02.jpg La légende de la deuxième image
Image03.jpg La légende de la troisième image

Le script PowerShell

La commande est à exécuter dans le dossier des images :

gc legendes.txt |
foreach {
  $fields = $_ -split ".jpg "
  $name = $fields[0]
  $caption = $fields[1]
  exiftool.exe -charset IPTC=UTF8 -IPTC:Headline="$name" -IPTC:Caption-abstract="$caption" $name".jpg"
}

Explications

Le script parcourt le fichier des légendes et pour chaque ligne du fichier, il sépare le nom du fichier (sans l’extension) et la légende afin de renseigner le titre et la légende dans les tags IPTC associés, au format UTF-8.

Dans cet exemple, je positionne le titre avec le nom du fichier, mais je pourrais choisir la légende (dans mon cas souvent trop longue) ou un titre fourni par le client.

Attention : le fichier des légendes doit être au format UTF-8 si on veut bien transmettre les caractères accentués ou régionaux.
Si ce n’est pas le cas (caractères extra-terrestres à la place des accents par exemple), il suffit de le convertir/sauvegarder dans ce format avec votre éditeur de texte (NotePad++ pour ma part).

Conclusion

Ancien développeur sous Unix/Linux, je suis plutôt du genre à geeker quelques heures sur les forums pour apprendre un nouveau langage et pondre la ligne de commande magique, alors que quelques minutes auraient parfois suffi pour réaliser le boulot à la main, Ctrl+C, Ctrl-V, etc…

Certes, c’est parfois beaucoup par curiosité 😉 Mais quand il s’agit de répéter la même chose régulièrement, avec des nombres de fichiers parfois énormes… vous comprenez. Maintenant, tout se fera automatiquement en quelques secondes !

Pour finir, un petit point SEO… Je sens que vous ne tenez plus en place et que vous mourrez tous d’envie de me flageller parce que je n’ai pas parlé du « texte alternatif » si cher à nos moteurs de recherche ! En fait WordPress ne semble pas vouloir renseigner ce champ automatiquement, nativement du moins. Il existe des plugins qui se chargent de le faire, mais comme je n’aime pas trop accumuler les extensions sur mes installs, je vais tester du hack PHP afin de peupler le alt text automatiquement avec la légende 😉 Je vous tiens évidemment au courant !