Rechazar la carga de imágenes de tamaño incorrecto usando el Cargador de medios

12

Estoy trabajando en una configuración súper estricta para agregar imágenes a los campos personalizados en la pantalla Publicar Edición. Mi escenario óptimo sería agregar un mensaje de error personalizado cuando el usuario intente cargar una imagen del tamaño incorrecto para ese valor personalizado específico.

Estoy consciente de que puedo hacer esto con cualquier cargador personalizado, pero realmente prefiero hacerlo con el Cargador de medios habitual. También estoy al tanto de wp_handle_upload_prefilter que ya utilizo para validar los nombres de archivo y generar mensajes de error personalizados basados en requisitos genéricos . Lo que necesito en este momento es una forma de utilizar los requisitos personalizados para rechazar las subidas según el campo al que estamos subiendo.

También tengo conocimiento de Diferenciar la imagen destacada de las imágenes de publicación al subir pero quería un pre-guardado solución.

Esto se vería así:

¿Alguna idea sobre cómo informar a wp_handle_upload_prefilter (o un campo similar) de qué campo estamos tratando?

    
pregunta moraleida 04.08.2014 - 17:08

1 respuesta

3

En su controlador, si configura 'error', se mostrará el mensaje de error y se cancelará la carga

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 su usuario intenta cargar un tamaño diferente, el mensaje será:

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

Tenga en cuenta que wp_handle_upload_prefilter llega muy temprano en el proceso de carga, por lo que es posible que desee probar si el archivo se cargó correctamente (desde el punto de vista de HTTP) y es una imagen antes de probar el tamaño.

Ref: funtion wp_handle_upload() en el archivo principal wp-admin/includes/file.php

    
respondido por el YaFred 17.08.2014 - 13:45

Lea otras preguntas en las etiquetas