Refuser le téléchargement d'images de taille incorrecte à l'aide de Media Uploader

12

Je travaille sur un paramètre extrêmement strict pour l'ajout d'images à des champs personnalisés dans l'écran Post Edit. Mon scénario optimal consisterait à ajouter un message d'erreur personnalisé lorsque l'utilisateur essaiera de télécharger une image de taille incorrecte pour cette valeur personnalisée spécifique.

Je sais que je peux le faire avec n’importe quel téléchargeur personnalisé, mais je préférerais vraiment le faire avec le Media Uploader standard. Je suis également au courant du wp_handle_upload_prefilter , que j'utilise déjà pour valider les noms de fichiers et générer des messages d'erreur personnalisés en fonction d'exigences génériques. . Ce dont j'ai besoin maintenant, c’est d’un moyen d’utiliser les exigences personnalisées pour refuser les téléchargements en fonction du champ sur lequel nous téléchargeons.

Je suis également au courant des différencier une image sélectionnée de la publication d'images au téléchargement , mais je souhaitais un enregistrement préalable. solution.

Cela ressemblerait à quelque chose comme ceci:

Avez-vous des idées sur la manière d'informer wp_handle_upload_prefilter (ou un domaine similaire) du champ avec lequel nous traitons?

    
posée moraleida 04.08.2014 - 17:08

1 réponse

3

Dans votre gestionnaire, si vous définissez "erreur", le message d'erreur s'affiche et annule le téléchargement

add_filter( 'wp_handle_upload_prefilter', 'custom_upload_filter' );

function custom_upload_filter( $file ) {
    $image_info   = getimagesize( $file['tmp_name'] );
    $image_width  = $image_info[0];
    $image_height = $image_info[1];

    if ( $image_with !== 800 || $image_height !== 600 ) {
        $file['error'] = __( 'Images must be sized exactly 800 * 600', 'your_textdomain' );
    }
    return $file;
}

Si votre utilisateur tente de télécharger une taille différente, le message sera le suivant:

“thefile.png” has failed to upload due to an error  
Size must be exactly 800 * 600

Notez que wp_handle_upload_prefilter intervient très tôt dans le traitement du téléchargement. Vous pouvez donc vérifier si le fichier a été correctement chargé (du point de vue HTTP) et s'il s'agit d'une image avant de tester la taille.

Réf.: fonction wp_handle_upload() dans le fichier de base wp-admin/includes/file.php

    
réponse donnée YaFred 17.08.2014 - 13:45

Lire d'autres questions sur les étiquettes