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

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.