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

12

Eu usei o tipo de postagem personalizada, onde 'miniatura', 'médio' e 'grande' não são necessários. Preciso desativar esses tamanhos e criar uma função ou plugin, onde eu possa definir qual tamanho de imagem é necessário para cada tipo de postagem personalizado.

Meu primeiro passo é ligar a função get_intermediate_image_sizes do wp-includes / media.php. Eu adicionei esse código ao functions.php, mas ele 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 do meu trabalho um gancho?

Bohdan Hdal
fonte
1
gostaria de uma resposta para isso também
urok93 11/11/11
2
Não é assim que você usa esse filtro. Para limpar tamanhos padrão, basta adicioná-lo com uma prioridade muito baixa e retornar uma matriz vazia. No entanto, isso não resolverá o seu problema, pois afetará todos os tipos de postagem. Não acho que haja uma maneira de fazer o que você deseja na versão atual do WP. Tente solicitar que os desenvolvedores do WP adicionem o $attachment_idargumento ao filtro dentro desta função. Dessa forma, você pode verificar o tipo de postagem dentro do seu gancho
onetrickpony
Meu passo é apenas experiência, mas não solução completa. Como posso usar o filtro corretamente? PS Obrigado pelo link ..
Bohdan Hdal 12/12
Alguma alteração no WP que torne possível agora?
Drivingralle
Sem alterações. Ainda é o mesmo problema.
Bohdan Hdal

Respostas:

7

Eu acho que a única solução que você tem no momento é desativar todos os tamanhos de imagem 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 );
scribu
fonte
Quais são os parâmetros 10 e 2 que você passa para o último add_filter?
Lucas