logo

[functions] Supprimer automatiquement les images trop grandes sur worpdress

Accueil Wordpress [functions] Supprimer automatiquement les images trop grandes sur worpdress

La pratique nous a démontré que nos clients uploadaient leurs images sans les renommer (voir ici le « hack » pour arranger un peu la situation) et 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 surchargé 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

// 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');

Commentaires

Une idée ? Partagez-la !

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *