Eliminación de tamaños de imagen para tipo de publicación personalizada

2

Estoy tratando de hacer esto sin usar un complemento, pero las acciones y los filtros

¿Hay alguna forma de eliminar los tamaños de imagen adicionales generados por WordPress según el tipo de publicación personalizada? He intentado trabajar con el filtro intermediate_image_sizes_advanced pero no parece que tenga acceso a $post o post_type . Así que estoy usando la función así:

function filter_image_sizes($sizes) {
    global $post;
    global $post_type;

    if($post->post_type == 'cpt_slides' || $post_type == 'cpt_slides'){
        unset( $sizes['thumbnail']);
        unset($sizes['medium']);
        unset( $sizes['large']);
    }

    return $sizes;
}
add_filter('intermediate_image_sizes_advanced', 'filter_image_sizes');

El razonamiento / situación

He creado un tipo de publicación personalizada de diapositivas (como un control deslizante de imagen) que utiliza la imagen destacada para permitir que el usuario cargue "diapositivas". También tengo algunos tamaños de imagen personalizados, pero uno específicamente para las diapositivas solo. Dado que las imágenes de diapositivas tendrán un tamaño estático, no quiero que WordPress genere todos estos tamaños de imagen adicionales que nunca usaré, por lo tanto, la pregunta.

    
pregunta Howdy_McGee 28.01.2014 - 16:53

3 respuestas

7

Puede ser que este filtro debería funcionar Fijado_imagen_imagen_spa

Nota: Esta solución funcionará si está cargando una imagen desde la pantalla de edición posterior. (probado en localhost con WP-3.8.1)

add_filter( 'intermediate_image_sizes', 'ravs_slider_image_sizes', 999 );
function ravs_slider_image_sizes( $image_sizes ){

    // size for slider
    $slider_image_sizes = array( 'your_image_size_1', 'your_image_size_2' ); 

    // for ex: $slider_image_sizes = array( 'thumbnail', 'medium' );

    // instead of unset sizes, return your custom size for slider image
    if( isset($_REQUEST['post_id']) && 'your_custom_post_type' === get_post_type( $_REQUEST['post_id'] ) )
        return $slider_image_sizes;

    return $image_sizes;
}
    
respondido por el Ravinder Kumar 30.01.2014 - 17:35
0

Parte del problema puede ser que este filtro podría terminar siendo llamado desde más de un lugar, o tal vez un lugar donde no haya publicaciones asociadas con la consulta. De hecho, parece que el filtro que se está utilizando solo se usa cuando el archivo adjunto se crea por primera vez como parte de los metadatos.

Hacer un poco de prueba me muestra que cuando estoy subiendo una imagen, las variables $ post y $ post_type no están establecidas en la ubicación en la que se usa este filtro. Es probable que esto suceda porque la carga de medios se realiza como un proceso en segundo plano a través de javascript en lugar de enviar un formulario enviar y recargar la página.

WordPress no está realmente configurado para manejar este tipo de filtrado, tal vez sea algo que se debería considerar para futuras actualizaciones, sugeriría enviar un ticket a WordPress Trac y obtener algunos consejos allí.

Básicamente, WordPress almacena los elementos multimedia independientemente de la publicación a la que se pueden adjuntar para que pueda usar el mismo archivo fácilmente en más de un lugar. Si WordPress le permitiera ajustar los tamaños generados de forma más granular, podría terminar con situaciones en las que subió una imagen para una publicación de blog y luego quiso reutilizar esa imagen en otro lugar como imagen destacada. La biblioteca de medios está configurada para manejar este tipo de cosas geniales, pero no está configurada para regenerar miniaturas caso por caso, está configurada para generar todas las miniaturas requeridas porque puede usar cualquiera o todas las miniaturas en otro lugar.

La forma más fácil de manejar esto sería usar su propia función de carga de medios para el metabox del tipo de publicación personalizada cuando esté cargando medios. Esto le permitiría omitir el proceso normal de miniaturas de WordPress y solo crear los tamaños que desea cuando se carga el archivo. Aquí hay un gran tutorial que lo ayudará con ese proceso: enlace

    
respondido por el Nullvariable 30.01.2014 - 21:11
-1

Tal vez podrías instalar este complemento: enlace

Este complemento puede agregar tamaños de imagen y anular los tamaños personalizados del tema. Luego puedes regenerarlos.

    
respondido por el Cynthia Lara 30.01.2014 - 18:13

Lea otras preguntas en las etiquetas