Chaque fichier glissé dans un article, une page ou un formulaire finit tôt ou tard au même endroit : un espace unique, consultable en grille ou en liste, où l’on retrouve la totalité des images et documents déposés sur le site, qu’ils soient rattachés à un contenu ou totalement orphelins.
Les pièces jointes comme type de contenu à part entière
Chaque fichier y est en réalité un contenu du type attachment, stocké comme n’importe quel article dans wp_posts, avec son propre identifiant. Le champ post_parent relie éventuellement le fichier au contenu où il a été inséré, et la métadonnée _wp_attachment_metadata conserve les dimensions et les différentes tailles générées automatiquement (miniature, moyenne, grande).
Le téléversement passe par la fonction media_handle_upload(), qui encapsule elle-même wp_handle_upload() pour la validation du fichier et wp_insert_attachment() pour la création de l’entrée en base.
Exemple : récupérer l’URL d’un fichier
<?php
$url = wp_get_attachment_image_url( $attachment_id, 'medium' );
Pièges fréquents
- Supprimer un contenu qui référence un fichier ne supprime jamais automatiquement le fichier de la médiathèque : les deux cycles de vie sont indépendants.
- Chaque taille d’image déclarée avec
add_image_size()génère un fichier physique supplémentaire sur le disque, ce qui peut multiplier l’espace occupé par une bibliothèque volumineuse. - Les extensions de fichiers autorisées sont limitées par la liste retournée par
get_allowed_mime_types(), filtrable mais volontairement restrictive pour des raisons de sécurité.