Per evitare di salvare le immagini originali in WordPress

WordPress fa un gran bel lavoro con le immagini, ridimensionandole automagicamente a tutte le dimensioni che ci servono; spesso però questo non va d’accordo con lo spazio di hosting, che è limitato.

Per risolvere il problema, si può fare una modifica al tema che permette di non salvare le immagini originali, sostituendole con la dimensione più grande impostata.

È sufficiente inserire questo codice in functions.php:

function replace_uploaded_image($image_data) {
    // esce se non c'è l'immagine "large"
    if (!isset($image_data['sizes']['large'])) return $image_data;

    // imposta i percorsi all'immagine originale e a quella "large"
    $upload_dir = wp_upload_dir();
    $uploaded_image_location = $upload_dir['basedir'] . '/' .$image_data['file'];
    $large_image_location = $upload_dir['path'] . '/'.$image_data['sizes']['large']['file'];

    // cancella l'immagine originale
    unlink($uploaded_image_location);

    // rinomina l'immagine "large"
    rename($large_image_location,$uploaded_image_location);

    // aggiorna i metadati e li restituisce
    $image_data['width'] = $image_data['sizes']['large']['width'];
    $image_data['height'] = $image_data['sizes']['large']['height'];
    unset($image_data['sizes']['large']);

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

Grazie a Serge Rauber per il tip.