logo

Supprimer automatiquement les images trop grandes sur Worpdress [functions]

La pratique nous a démontré que nos clients uploadaient leurs images sans les compresser. Il n’est pas rare que l’utilisateur uploade directement les images à la sortie de leur smartphone ou de leur appareil photo. Les images sont toujours disproportionnées face au besoin du web (300ppp et plusieurs méga contre un 72ppp et quelques centaines de kilos pour la norme web).

En définitive vous obtenez un FTP et une bande passante surchargés par des images inutilement trop grandes et trop lourdes.

Ce « hack », facile, permet d’effacer les images dépassant les dimensions de votre « grande taille » dans le fichier setting/medias/ de wordpress et de garder (bien entendu) ces mêmes images dans des versions optimisées pour le web.

// Remplacer l'image originale trop grande
function replace_uploaded_image($image_data) {
if (!isset($image_data['sizes']['large'])) return $image_data;

$upload_dir = wp_upload_dir();
$uploaded_image_location = $upload_dir['basedir'] . '/' .$image_data['file'];
$large_image_filename = $image_data['sizes']['large']['file'];

$image_basename = wp_basename($uploaded_image_location);
$large_image_location = str_replace($image_basename, $large_image_filename, $uploaded_image_location);

// suppression de l'image trop grande
unlink($uploaded_image_location);

// renommer l'image de grante taille
rename($large_image_location, $uploaded_image_location);

// update image
$image_data['width'] = $image_data['sizes']['large']['width'];
$image_data['height'] = $image_data['sizes']['large']['height'];
unset($image_data['sizes']['large']);

// Check
foreach($image_data['sizes'] as $size => $sizeData) {
if ($sizeData['file'] === $large_image_filename)
unset($image_data['sizes'][$size]);
}

return $image_data;
}
add_filter('wp_generate_attachment_metadata', 'replace_uploaded_image');