web-dev-qa-db-fra.com

Supprimez l'image originale de grande taille après le téléchargement et ne laissez que 3 images écrasées par la galerie multimédia

J'ai besoin de savoir s'il est possible d'effacer en quelque sorte l'image d'origine téléchargée via le formulaire Gravity: post image - post field ?! Avec la situation, je reçois maintenant 4 images. 1 original (quel que soit l'utilisateur sur son PC - jusqu'à 4 Mo qui encombrent le serveur) et 3 que Wordpress crée selon les spécifications (miniature, moyen, grand). Je voudrais avoir la possibilité lorsque l'utilisateur télécharge la "grande image originale" à supprimer lors du téléchargement et à en laisser 3 restantes dans la galerie multimédia?!. Cela va considérablement améliorer le stockage sur mon serveur.

À votre santé!

5
jimilesku

Que dis-tu de ça:

add_filter( 'wp_generate_attachment_metadata', 'delete_fullsize_image' );
function delete_fullsize_image( $metadata )
{
    $upload_dir = wp_upload_dir();
    $full_image_path = trailingslashit( $upload_dir['basedir'] ) . $metadata['file'];
    $deleted = unlink( $full_image_path );

    return $metadata;
}

Pas tout à fait sûr que tout fonctionnera correctement sans l’image principale, mais c’est tout. Vous ne pourrez pas régénérer les vignettes/tailles car l'image principale est requise pour cela.

Edit: Je viens de relire la question, j'ai remarqué que vous souhaitiez que cela ne se produise que lorsque les gens téléchargent via un formulaire. Doit être tôt pour moi, le code ci-dessus supprimera toute pièce jointe téléchargée. Je suppose que tout ce que vous avez à faire est de trouver un moyen de vérifier si le téléchargement a été effectué via votre formulaire Gravity. J'espère que ça vous aide quand même.

5
Cristian