Si pour une raison ou une autre vous voulez déplacer les fichiers médias dans les dossiers de votre site WordPress, je vais vous expliquer comment faire.
Dans mon cas, j’ai eu ce besoin quand j’ai voulu désactiver l’organisation en dossier annuels et mensuels par défaut, et déplacer tous mes médias à la racine du dossier des médias (wp-content/uploads
).
Procédure en plusieurs étapes
Pour déplacer les fichiers médias de votre site WordPress, il faut procéder en plusieurs étapes :
- déplacer les fichiers
- modifications en base de données
- modification des articles et pages
1 – Déplacer les fichiers
Pour cette étape, rien de plus simple, il suffit d’utiliser votre client FTP pour déplacer vos fichiers.
2 – Modifications en base de données
Le déplacement des fichiers ne suffit pas, car le chemin vers le fichier est enregistré en base de données.
Mon premier réflexe a été d’aller voir en base le contenu de la table servant à stocker les informations concernant les médias : wp_posts
. Et dans cette table, BINGO !, une colonne (« guid ») contient l’adresse complète vers mon fichier. Je m’empresse de modifier ce champ pour tous mes médias, et retourne sur la page de bibliothèque médias de mon blog, et là… rien…
En effet, ce champ « guid » n’est pas utilisé pour retrouver nos fichiers médias, mais utilisé dans la génération des flux (RSS ou autres) de votre site WordPress. Il est donc fortement déconseillé de changer cette colone, ce qui est trop tard pour moi (voir l’article sur le codex WordPress).
Le chemin vers le fichier d’un média est enregistré dans la table wp_postmeta
. Dans cette table, chaque média a deux enregistrements qui lui correspondent : « _wp_attached_file » et « _wp_attachment_metadata » (ces noms correspondent à la valeur de la colonne « meta_key »).
La ligne « _wp_attached_file » est une simple chaîne de caractère qu’il est très facile de modifier.
Quant à la ligne « _wp_attachment_metadata », il s’agit d’un array sérialisé (pour en savoir plus sur la sérialisation, lisez cet article sur OpenClassrooms). Le chemin est contenu dans la 6e « section » (entre point-virgules) de chaque tableau sérialisé. Quand vous modifiez le chemin, pensez bien à également changer le nombre de caractères ([...];s:21:"2019/04/logo_bleu.jpg;[...]"
de l’entrée sérialisée.
3 – Modifications des articles et pages
Il reste maintenant à modifier en HTML les pages et articles qui incluent des médias de notre bibliothèque.