Nous l'utilisons actuellement pour modifier la compression utilisée sur les fichiers jpgs lors du téléchargement dans la médiathèque WP:
add_filter(‘jpeg_quality’, function($arg){return 75;});
Toutefois, cela ne compresse pas l'image d'origine. Nous avons parfois besoin d'afficher l'image d'origine sur notre site Web et celle-ci doit également être compressée. Comment faisons-nous cela?
Merci d'avance pour votre aide!
Pour compresser l'image téléchargée, j'ai écrit un extrait de code simple qui remplace immédiatement un fichier récemment téléchargé par une image dont la qualité peut être spécifiée:
function wt_handle_upload_callback( $data ) {
$image_quality = 30; // Change this according to your needs
$file_path = $data['file'];
$image = false;
switch ( $data['type'] ) {
case 'image/jpeg': {
$image = imagecreatefromjpeg( $file_path );
imagejpeg( $image, $file_path, $image_quality );
break;
}
case 'image/png': {
$image = imagecreatefrompng( $file_path );
imagepng( $image, $file_path, $image_quality );
break;
}
case 'image/gif': {
// Nothing to do here since imagegif doesn't have an 'image quality' option
break;
}
}
return $data;
}
add_filter( 'wp_handle_upload', 'wt_handle_upload_callback' );
En ce qui concerne les tailles d’image supplémentaires (il suffit de changer la valeur de retour):
add_filter( 'wp_editor_set_quality', function( $quality ) { return 30; } );