Les nouvelles installations de WordPress à partir de la version 3.5 ne disposent plus de l’option permettant de définir manuellement le dossier de stockage des médias envoyés depuis l’éditeur et donc, l’URL des fichiers médias.
Une telle option n’a pas disparu pour autant du CMS, ce tutoriel vous montrera comment faire pour la configurer à nouveau. Pour utilisateurs avertis uniquement.
Ces deux réglages existent toujours en base de données (options upload_path et upload_url_path) et WordPress les applique encore. Mais les champs Stocker les téléversements dans ce dossier et Adresse web complète pour les fichiers ne s’affichent dans Réglages > Médias que si l’un d’eux contient déjà une valeur différente de celle par défaut, par exemple sur un site configuré avant WordPress 3.5. Sur une installation standard, la section Téléversement des médias se limite à une case à cocher.
Par défaut, WordPress stocke les médias dans le dossier /wp-content/uploads et les classe dans des sous-dossiers par année puis par mois tant que la case Organiser mes téléversements dans des dossiers mensuels et annuels est cochée, ce qui est le cas sur une nouvelle installation. C’est ce que je recommande.
Pour changer de dossier, connectez-vous à votre serveur FTP à l’aide de votre client FTP favori. À la racine de votre installation WordPress, modifiez le fichier wp-config.php avec un éditeur de texte. La constante UPLOADS s’ajoute au-dessus de la ligne /* C’est tout, ne touchez pas à ce qui suit ! Bonne publication. */ (/* That's all, stop editing! Happy publishing. */ sur une installation en anglais). Elle fonctionne sur toutes les installations, récentes ou non, et l’emporte sur les deux réglages évoqués plus haut.
Pour définir l’emplacement de stockage dans le dossier /wp-content/medias, ajoutez cette ligne :
Au contraire, si vous comptez placer le dossier à la racine de votre installation WordPress afin d’obtenir des adresses plus courtes (/medias/ au lieu de /wp-content/uploads/), indiquez ceci :
Dans les deux cas, le chemin est relatif au dossier d’installation de WordPress (celui qui contient wp-admin et wp-includes) et l’adresse des fichiers en découle : https://www.votresite.fr/medias/ pour le second exemple. N’y mettez ni barre oblique au début, ni chemin absolu du serveur, sous peine d’adresses erronées. Si WordPress est installé dans un sous-dossier, le dossier des médias s’y trouve aussi.
Sauvegardez le fichier modifié puis envoyez un fichier dans votre médiathèque pour tester l’effectivité du changement : WordPress crée lui-même le dossier s’il n’existe pas. S’il n’y parvient pas, il affiche le message « Impossible de créer le dossier… Son dossier parent est-il accessible en écriture par le serveur ? », signe d’un problème de droits sur le serveur. Dans ce cas, contactez votre hébergeur.
De prime abord, certains utilisateurs percevront ce changement comme un retour en arrière… en réalité, cette modification est largement justifiée (cf. WordPress trac). Un avis que je partage d’autant plus qu’une telle option peut casser un site en 2 secondes.
Et les médias déjà envoyés ?
La constante ne déplace aucun fichier : ceux déjà envoyés restent dans /wp-content/uploads. Or WordPress enregistre l’emplacement de chaque média par rapport au dossier des médias (sous la forme année/mois/photo.jpg) : dès le changement, il les cherche dans le nouveau dossier et leurs vignettes disparaissent de la médiathèque. Les adresses insérées dans vos contenus, elles, sont complètes et pointent toujours vers l’ancien dossier.
Pour garder un site cohérent, faites d’abord une sauvegarde complète (fichiers et base de données). Déplacez ensuite le contenu de /wp-content/uploads dans le nouveau dossier en conservant ses sous-dossiers, puis remplacez l’ancienne adresse par la nouvelle dans la base de données avec WP-CLI :
Avec --dry-run, la commande affiche le nombre de remplacements par table sans rien modifier : relancez-la sans cette option une fois le résultat vérifié. wp search-replace gère les données sérialisées (réglages d’extensions, par exemple), et --skip-columns=guid laisse intacts les identifiants uniques des contenus, qui ne doivent jamais changer. Videz ensuite le cache de votre site s’il en utilise un.
Sur un réseau multisite
Sur un réseau multisite créé depuis WordPress 3.5, la constante vaut pour tout le réseau : le site principal utilise le dossier indiqué, et chacun des autres sites un sous-dossier sites suivi de son identifiant (par exemple medias/sites/2). La section Téléversement des médias n’apparaît d’ailleurs pas dans les réglages des sites d’un réseau. Si votre réseau fonctionne en sous-répertoires, gardez le dossier dans wp-content (premier exemple) : les règles de réécriture fournies pour ce type de réseau ne servent les fichiers des sites secondaires que dans wp-content, wp-admin et wp-includes, et leurs médias seraient introuvables ailleurs.
Placer les médias hors de WordPress ou sur un sous-domaine
Avec la constante UPLOADS, le chemin part toujours du dossier de WordPress et l’adresse des fichiers de celle du site. Pour stocker les médias ailleurs sur le serveur et les servir depuis un sous-domaine, utilisez plutôt le filtre upload_dir dans une extension « must-use », un fichier PHP à déposer dans le dossier /wp-content/mu-plugins :
Remplacez les deux valeurs par le chemin absolu du dossier sur votre serveur et par l’adresse qui le sert, sans barre oblique finale. Le sous-domaine doit déjà pointer vers ce dossier : c’est un réglage de votre hébergement. Une extension « must-use » est toujours active, quel que soit le thème : les adresses de vos médias ne dépendent donc pas d’un changement de thème. Comme avec la constante, les médias déjà envoyés doivent être déplacés et leurs adresses remplacées. Enfin, ce code est prévu pour un site unique : sur un réseau multisite, tous les sites partageraient ce dossier, et la suppression d’un site effacerait les médias de tous les autres.
Pour mieux classer vos fichiers dans l’administration, apprenez à organiser votre bibliothèque de médias en dossiers.
36 réponses
Bonsoir
J’utilise Tutor lms pro et je voudrais que l’utilisateur puisse utiliser un autre gestionnaire de media autre que celui par défaut de WordPress
Comment faire une chose pareille
Bonjour. J’ai un souci. Et je voudrais que vous m’aidiez.
En fait, je ne suis pas un développeur. Mais, je veux créer un site web. J’ai acheté et hébergé mon nom de domaine chez OVH. J’ai installé manuellement wordpress. J’ai réussi à créer ma base de données. J’ai créer le click1 module.
Maintenant, là où j’ai de souci, en créant le module, au niveau de la dernière ou l’avant dernière étape j’ai pas modifié le champ (Installation path) qui, par défaut a affiché : www/mon nom d’identification chez OVH
Et actuellement, le chemin d’accès à mon site ne me plaît : nomdedomaine.com/nomd’identificationchezovh.
Comment modifier cela pour que dans la barre d’adresse, « nomdedomaine.com » suffise à accéder à mon site?
Merci de me répondre.
Bonjour,
je me permets de poster ma question ici, en rapport avec la gestion des images.
Je travail sous WordPress avec boutique Woocommerce. Le but est d’afficher des articles avec descriptifs et photos (rien de plus basique)
Afin de faciliter mes mise à jours de produits dans la boutique, j’aimerais mettre mes visuels dans un dossier différent des images/médias du site de base, et d’éviter de les « noyer » avec tous les médias du site.
J’ai bien essayé de créer un sous-dossier dans Upload ou de le mettre directement dans wp-content (via mon client FTP), mais à chaque fois que je fais mon transfert de produits avec la nouvelle URL (en CSV), Woocommerce me signale « Erreur d’obtention de l’image distante » et je n’ai pas de visuel lorsque je consulte mon produit.
Je cherche depuis quelques temps une solution, mais je ne vois rien à ce propos. J’ai bien peur que cela soit impossible, mais j’aimerais en avoir la certitude.
Merci par avance pour votre réponse.
Il n’est pas possible de modifier la façon dont est gérée le stockage des fichiers sur le serveur. Néanmoins, une extension que j’apprécie particulièrement comme WP Media Folder permet la création de dossiers virtuels en back-office. Je l’utilise pour de nombreux projets avec succès.
Bonjour Aurélien,
Merci pour ce retour concret. Je teste et vous retient au courant.
bonjour, Merci pour cette astuce, cependant c’est dommage que vous n’indiquiez pas une méthode pour changer les liens de l’ensemble des images déjà postées, en effet tout les images des articles publiés avant ce changement pointent vers une mauvaise adresse, résultat, l’ensemble du blog n’a plus d’image affichée…. 🙁 Je me suis rendue dans la base de donnée mais je n’ai pas trouvé l’endroit où l’on pouvait modifier ce reglage, ou bien y’a t-il une requette sql a programmer pouvez vous m’aider, merci
La <a href= »https://wpchannel.com/wordpress/tutoriels-wordpress/22-requetes-mysql-indispensables-wordpress/ »>requête 18</a> devrait faire l’affaire. Dans tous les cas, sauvegardez votre base de données !
Bonjour, J’ai la version 3.8.1 de WP, j’aimerais mettre mes images à la racine du site dans un dossier « images », je dois les mettre dans le dossier « www » ou bien plus haut ? Si je les mets dans « www » je dois écrire ça dans wp-config ? : define( ‘UPLOADS’, ‘www/’.’images’ )
Merci
Le domaine pointe sur le dossier /www donc vous n’avez pas à indiquer cela dans la define. Idem que tout ce qui est visible sur le Web se place dans ce dossier et nulle part ailleurs. Attention aux anciennes images qui pourraient se trouver dans le dossier par défaut.
Merci j’ai donc écris define( ‘UPLOADS’, ».’medias’ ); et j’ai crée un dossier « medias » dans mon www où j’ai mis des photos pour tester. Mais aucune ne s’affiche ! De plus, WP me décline l’image en 10 formats différents sur le serveur, alors que mes images sont déjà redimenssionées !
WordPress génère 3 tailles par défaut (miniature, moyenne et large) et conserve la taille originale à partir de laquelle sont générées les miniatures. Le thème peut en ajouter d’autres ce qui semble être votre cas.
Pour la define, il faudrait voir concrètement avec les accès car là je ne peux pas vous aider davantage.
Bonsoir à tous,
même question que JulienL, est-ce que ça fonctionne sous WP 3.7.1 ?
Et n’existe-t-il pas un plugin pour faire la même chose sans risque pour les utilisateurs « moyennement » avertis ? 😉
Merci de la réponse.
Oui cette méthode est fonctionnelle. Toutefois, si vous ne parvenez pas à envoyer des fichiers il vous faudra vérifier les autorisations de lecture/écriture sur le dossier en question (CHMOD) via un client FTP.
Contactez votre hébergeur pour en savoir plus sur ces restrictions.
Aurélien, David et à tous,
Lors de l’ouverture de mon compte 1and1, j’avais opté pour un hebérgement windows. Or, le problème venait de là et il fallait choisir un hébergement Linux, même si je n’utilise rien en Linux, au contraire.
Je n’ai eu aucun changement pour l’administration via WordPress, mais il m’a permis de transférer mes médias sans aucune contrainte.
Le basculement de compte s’est fait suite à un appel téléphonique, en patientant 6 heures environ.
Si cela vous arrive, n’oubliez pas de sauvegarder vos données personnels transférée via le serveur FTP, car vous repartirez de 0.
Le « problème » paraît connu chez 1&1, car la solution m’a été proposée sans attendre.
Je peux maintenant modifier les droits d’accès depuis le client FTP, alors qu’avant je ne pouvait pas y accéder.
WordPress est conçu pour tourner sur un serveur Linux. Un serveur Microsoft est supporté mais cela est plus contraignant à gérer.
Bonsoir Aurélien,
Cette méthode s’applique-t-elle toujours à WordPress 3.7.1 ?
Car dès l’installation de ce wordpress (je n’ai pas connu les anciennes), je n’ai jamais pu transférer un seul média.
J’ai donc beaucoup cherché et suis tombé très rapidement sur ce tuto, en voulant changer le chemin et ainsi créer un nouveau dossier « médias ». A priori, je suis très bien tombé.
Or, même en appliquant cette méthode, rien : que ce soit en transfert par l’intermédiaire de wordpess ou par mon client FTP.
Merci par avance pour la réponse et merci pour tous les recherches et l’aide que vous m’apportez par le biais de ce site.
Bonjour,
J’utilise le template geo place. Mais récemment j’ai eu un bug sur le chargement des images.
Les images sont ne sont pas téléchargées dans le bon répertoire. J’obtiens ce type d’erreur:
Image not found: http://www.sen-events.com/wp-content/uploads/2013/August/images-1377430565.jpg
Merci de votre aide
Bonjour !
Pouvez-vous me dire où se trouve l’emplacement des sites sous WP MU ? Car dans mon interface FTP je ne trouve pas le dossier correspondant au lien de mon site. (ex : sur un réseau basé sur example.com, avec un sous domaine
Bonsoir tout le monde,
Juste pour poser une question en rapport avec cet article.
Afin de rendre un site multi-langue(Français/Anglais) j’ai opté pour le mode multisite de WordPress. Mon souci actuel est la suivante : Les médias wordpress de chaque site sont stockés dans un dossier sous la forme » wp-content/blogs.dir/#/Années/Mois ». J’ai alors fait des recherches pour essayer de trouver s’il existe un moyen pour faire en sorte que plusieurs sites partagent le même répertoire média. Les principales solutions proposées à savoir:
– la méthode du « define(‘UPLOADS’,’NewPath’) » dont vous aviez parlez dans cet article et
-la méthode du switch_to_blog(1) proposé par TheDeadMedic ici http://stackoverflow.com/questions/3202865/wordpress-3-multisite-with-same-medialibrary ne permettent pas vraiment un partage des médias entre les sites i.e qu’avec ces deux méthodes les médias supposés partager ne s’affichent que dans la bibliothèque média du site principal(suite à des test que j’ai réalisés).
Je suis également tombé sur la discussion suivante : http://wordpress.org/support/topic/define-the-same-upload-folder-for-all-multisite-blogs dans laquelle « Ipstenu » disait que cela n’était pas encore possible(faire partager un dossier de média afin que plusieurs site l’utilise ) mais c’était cette discussion date de 2ans!
Bref j’aimerais savoir s’il est possible ou s’il existe actuellement un moyen de résoudre ce problème.
Merci
Non en fait, je déconseille de concevoir un multilingue avec du multisite ce n’est pas du tout conçu pour cela. Pour faire du multilingue, rien de mieux que le plugin WPML.
D’accord merci.
Apparemment ça ne fonctionne pas chez moi. petit souci d’affichage. So comment faire lorsque les vignettes sont dans un dossier vignet et que le lien est du type : ../wp-content/uploads/vignet/vignet-travaux.jpg ???
Le chemin du chemin est opérationnel pour les nouveaux médias envoyés uniquement.
Bonjour, je viens de changer le nom de mon répertoire wp-content via le plugin better wp security. Hors depuis, je n’ai que des erreur. Comment puis je revenir a mon wp-content ?
Bonjour Adrien,
Je me permets de vous contacter car j ai un petit souci.
Je suis sous OVH et les dossiers upload n affichent que 5000 images. Bien que les autres soient dedans on ne les voit pas.
Donc forcement le cache ne marche pas 🙁 une horreur
J aimerais savoir comment faire pour faire du dossier qui a 15 000 en faire 5 de 3 000 images mais que ca change les url aussi en base car je ne vais pas pouvoir me refaire tous les produits 🙁
Auriez vous une idée ?
Changez d’hébergeur pour une solution plus puissante et activez la classification mensuelle (ce qui n’aura d’impact que pour les prochaines images)…
J’ajouterais ceci:
Quand je copiais le code pour installer à la racine, ça installe à la racine du WordPress. Comme j’installe habituellement mes sites dans un répertoire et que je voulais que mon répertoire d’images soit à l’extérieur de ce répertoire, voici mon code:
define( ‘UPLOADS’, ‘../’.’fichiers_contenu’ );
Le ‘../’ indiquant qu’on doit remonter d’un répertoire dans le chemin.
Merci pour m’avoir montré la voie, ceci dit 🙂
Enfin je vais enlever le fameux « wp-content » dans l’adresse de mes images.
Plus de 50% des images trouvées dans les serps de google images portent ce terme dans leur adresse.Une façon de dire, regarder je me sers de wordpress pour créer mon site .
Merci pour le tuto
Attention à bien déplacer les images et corriger les URLS dans la base de données si le changement intervient sur une installation existante de WordPress. 😉
Bonjour,
J’ai un site wordpress et un sous domaine également en wordpress geré avec le multisite. J’ai un gros problème d’upload d’images, puis-je le régler avec cette méthode?
Merci
Tuto intéressant, certes.
Toutefois, par rapport à d’autres CMS, je trouve la gestion des médias dans WordPress assez basique. L’utilisant pour faire essentiellement des sites de type « vitrine », je désactive la création de dossiers mensuels et j’aurais aimé une vraie « gestion » d’un dossier medias, soit de pouvoir créer des sous-dossier dans le dossier medias racine. Ainsi mes photos ou autres auraient pu être placées dans des sous-dossiers tels que entreprise, produits, site (par exemple pour medias servant à illustrer le site)
Une vraie gestion au sens où tu l’entends, signifierait une plus grande complexité de gestion pour bon nombre d’utilisateurs – et des soucis de droits pour les hébergeurs.
Par contre, c’est tout l’objectif des plugins de faire cela. Et même si je n’ai pas de nom en tête, il me semble avoir testé par le passé ce que tu cherches.
Sinon, en manuel, ça se fait aussi…
Julio a trouvé un plugin qui remait les deux champs
http://wordpress.org/extend/plugins/wp-original-media-path/
Astucieux et très utile comme tous les tutos Wp Channel
Merci pour le tuto. As-tu creusé la question pour faire la même chose mais pour cette fois-ci déplacer le répertoire d’uploads sur un sous-domaine ou un autre nom de domaine ?
Non pas vraiment creusé mais ça me bien plus complexe pour le déplacer sur un sous-domaine. A mon avis, il doit falloir dupliquer les médias comme pour un CDN…