Como desativar a geração de tamanhos de imagem padrão para alguns tipos de postagem personalizados?

11

Eu usei o tipo de postagem personalizado, em que 'miniatura', 'médio' e 'grande' não são necessários. Preciso desabilitar esses tamanhos e criar função ou plug-in, onde posso definir qual tamanho de imagem é necessário para cada tipo de postagem personalizada.

Meu primeiro passo é ligar a função get_intermediate_image_sizes de wp-includes / media.php. Eu adicionei este código para functions.php mas não está funcionando: (

add_filter('get_intermediate_image_sizes', 'get_intermediate_image_sizes_fixed');
function get_intermediate_image_sizes_fixed() {
    global $_wp_additional_image_sizes;
    //$image_sizes = array('thumbnail', 'medium', 'large'); // Standard sizes
    $image_sizes = array();
    if ( isset( $_wp_additional_image_sizes ) && count( $_wp_additional_image_sizes ) )
        $image_sizes = array_merge( $image_sizes, array_keys( $_wp_additional_image_sizes ) );
return apply_filters( 'intermediate_image_sizes', $image_sizes );
}   

UPD: A edição desta linha no media.php está funcionando. Tipos padrão após alterações não geradas.

$image_sizes = array('thumbnail', 'medium', 'large');

Mas como fazer meu trabalho funcionar?

    
por Bohdan Hdal 11.12.2011 / 19:39

1 resposta

6

Acho que a única solução que você tem no momento é desativar todos os tamanhos de imagens intermediários:

add_filter( 'intermediate_image_sizes', '__return_empty_array', 99 );

E, em seguida, gere-os manualmente, dependendo do tipo de postagem, conectando-se a 'wp_generate_attachment_metadata', onde você tem acesso ao ID do anexo (e, portanto, à postagem principal):

function do_your_stuff( $data, $attachment_id ) {
  // generate intermediate images

  return $data;
}

add_filter( 'wp_generate_attachment_metadata', 'do_your_stuff', 10, 2 );
    
por scribu 12.12.2011 / 03:15