Je travaille sur un paramètre extrêmement strict pour l'ajout d'images à des champs personnalisés dans l'écran d'édition. 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 suis conscient que je peux le faire avec n'importe quel téléchargeur personnalisé, mais je préférerais vraiment le faire avec le téléchargeur de média standard. Je suis également conscient du wp_handle_upload_prefilter que je 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 conscient de Différencier l’image sélectionnée de la publication d’images au moment du téléchargement mais je voulais une solution de sauvegarde avant enregistrement.
Cela ressemblerait à quelque chose comme ça:
Avez-vous des idées sur la façon d’informer wp_handle_upload_prefilter
(ou un nom similaire) du champ avec lequel nous traitons?
Dans votre gestionnaire, si vous définissez 'erreur', le message d'erreur sera affiché et annulera 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 téléchargé (du point de vue HTTP) et s'il s'agit d'une image avant de tester la taille.
Ref: funtion wp_handle_upload()
dans le fichier de base wp-admin/includes/file.php