vendredi 25 septembre 2026

À propos

Contact

Tips

Médiathèque WordPress : régénérer et nettoyer les tailles d’images

Après un changement de thème, les tailles d'image générées ne correspondent plus aux besoins réels. Voici comment les régénérer et nettoyer proprement la médiathèque.

Par Clément Hadrot • 6 octobre 2020 • 5 min de lecture • Aucun commentaire
Médiathèque WordPress : régénérer et nettoyer les tailles d'images

Chaque fois qu’une image est envoyée dans la médiathèque WordPress, le CMS génère automatiquement plusieurs variantes redimensionnées : la miniature, la taille moyenne, la grande taille, et toutes les tailles personnalisées déclarées par le thème et les extensions actives. C’est pratique, mais cela pose un problème classique : si les tailles déclarées changent après coup, les images déjà présentes dans la médiathèque ne sont pas régénérées automatiquement.

Résultat fréquent après un changement de thème ou une modification du design : des vignettes floues, étirées, ou carrément absentes sur les anciens contenus. Voici comment régénérer proprement, et comment nettoyer ce qui ne sert plus.

Comprendre pourquoi les anciennes images ne suivent pas

La fonction add_image_size(), appelée sur le hook after_setup_theme, ne fait que déclarer une taille pour les futurs uploads. Elle n’a aucun effet rétroactif sur les fichiers déjà présents sur le serveur :

add_action( 'after_setup_theme', function() {
    add_image_size( 'carte-actualite', 480, 320, true );
} );

Tant qu’une image existante n’est pas retraitée, WordPress ne dispose tout simplement pas du fichier carte-actualite correspondant, et retombe sur la taille la plus proche disponible, souvent avec un rendu dégradé.

Régénérer avec WP-CLI

La commande la plus fiable pour régénérer l’ensemble des tailles reste WP-CLI, disponible en ligne de commande sur la plupart des hébergements mutualisés modernes et systématiquement en environnement de développement :

wp media regenerate --yes

Sur une médiathèque volumineuse, cette commande peut prendre du temps. Il est possible de la limiter à certaines tailles seulement, ce qui accélère nettement le traitement quand une seule taille a changé :

wp media regenerate --image_size=carte-actualite --yes

Et pour ne traiter qu’un sous-ensemble d’identifiants, en cas de doute sur l’impact global :

wp media regenerate 12 45 78 --yes
L'essentiel à retenir : Changer add_image_size ne régénère pas les fichiers existants ; wp media regenerate recrée toutes les tailles ; Supprimer les tailles inutilisées libère de l'espace disque

Régénérer sans accès en ligne de commande

Sur un hébergement sans accès SSH, l’extension « Regenerate Thumbnails » reste la solution la plus simple : elle propose exactement la même action depuis l’interface d’administration, avec une barre de progression. Le principe technique est identique à celui de WP-CLI : chaque taille manquante est régénérée à partir du fichier original conservé par WordPress.

Nettoyer les tailles devenues inutiles

À l’inverse, un thème qui a évolué laisse souvent des tailles d’image obsolètes, déclarées par un thème précédent ou une extension désinstallée. Ces fichiers continuent d’occuper de l’espace disque sans jamais être servis. La commande suivante liste les tailles enregistrées :

wp eval 'print_r( wp_get_registered_image_subsizes() );'

Pour supprimer physiquement les fichiers correspondant à une taille qui n’est plus déclarée nulle part, un script dédié reste nécessaire : WordPress ne propose pas nativement de commande de suppression sélective par taille. Le plus sûr reste d’itérer sur les pièces jointes et de supprimer les entrées correspondantes dans les métadonnées :

$attachments = get_posts( array(
    'post_type'      => 'attachment',
    'posts_per_page' => -1,
) );

foreach ( $attachments as $attachment ) {
    $metadata = wp_get_attachment_metadata( $attachment->ID );
    if ( isset( $metadata['sizes']['ancienne-taille'] ) ) {
        $upload_dir = wp_upload_dir();
        $file_path  = $upload_dir['basedir'] . '/' . dirname( $metadata['file'] ) . '/' . $metadata['sizes']['ancienne-taille']['file'];
        if ( file_exists( $file_path ) ) {
            unlink( $file_path );
        }
        unset( $metadata['sizes']['ancienne-taille'] );
        wp_update_attachment_metadata( $attachment->ID, $metadata );
    }
}

Limiter le nombre de tailles générées par défaut

Toutes les tailles natives ne sont pas toujours utiles. Il est possible de désactiver celles qui ne servent jamais dans le thème, ce qui réduit d’autant le nombre de fichiers générés à chaque upload :

add_filter( 'intermediate_image_sizes_advanced', function( $sizes ) {
    unset( $sizes['medium_large'] );
    return $sizes;
} );

Un site avec beaucoup d’uploads et plusieurs tailles personnalisées peut vite générer six à huit fichiers par image. Sur un mutualisé avec un quota de stockage serré, désactiver les tailles inutiles fait une réelle différence.

Bonnes pratiques à retenir

  • Toujours régénérer après un changement de thème qui modifie les tailles déclarées
  • Cibler la régénération sur la taille modifiée plutôt que de tout relancer si le volume est important
  • Faire un test sur une copie de la base avant une régénération massive en production
  • Désactiver les tailles natives inutilisées pour limiter le nombre de fichiers générés

Une régénération complète sur plusieurs milliers d’images peut saturer temporairement les ressources d’un hébergement mutualisé : mieux vaut la lancer en heures creuses, ou la fragmenter par lots d’identifiants.

En résumé

La médiathèque WordPress est bien plus flexible qu’il n’y paraît, à condition de comprendre que la déclaration d’une taille et sa génération effective sont deux étapes distinctes. WP-CLI reste l’outil le plus efficace pour régénérer en masse, et un nettoyage régulier des tailles obsolètes évite d’accumuler des fichiers inutiles sur le serveur au fil des refontes successives.

Partager :

À propos de l'auteur

Clément Hadrot

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi