add_image_size () para tipos de postagem específicos

15
set_post_thumbnail_size( 80, 80, true ); // true for all post types

Suponha que eu tenha dois tipos de postagem em exibição no meu blog: postagem, vídeo e produto. Talvez eu queira um tamanho de imagem de 80 x 80 para minhas postagens, mas 100 x 100 para meus vídeos e 50 x 100 para meus produtos. Até onde sei, sou forçado a criar miniaturas para minhas imagens de postagem nas dimensões de 100 x 100 e também 50 x 100. E para os meus produtos, sou forçado a criar miniaturas de 80x80 e 100x100, mesmo que não as use nunca.

Existe uma maneira de criar tamanhos de imagem baseados em tipos de postagem para que você não acabe fazendo um monte de imagens que você não planeja usar, e desperdiçando recursos que poderiam ser usados em outro lugar?

    
por Sampson 26.11.2010 / 22:28

3 respostas

11

Não há como basear os tamanhos das imagens no tipo de postagem, pois as imagens ainda não estão anexadas a uma postagem quando você as envia e os tamanhos intermediários da imagem são criados (quando você os adiciona por meio de "Novas mídias", eles são nem mesmo anexado a nenhum post).

No entanto, recentemente eu criamos dois plugins que juntos farão o que você quiser. Imagens intermediárias virtuais interceptarão a criação dos tamanhos de imagem intermediários: eles não serão criados no disco, mas ainda existirão no array de metadados. Isso faz com que o WordPress pense que eles existem para que você possa usá-los como imagens normais. O complemento complementar On-Demand Resizer criará tamanhos de imagem ausentes quando eles forem solicitados. A primeira vez que a imagem é solicitada é criada, todas as solicitações subseqüentes serão exibidas apenas na imagem recém-criada.

Esses plugins precisam ser reescritos antes de colocá-los no diretório de plugins do WordPress, mas eles devem estar seguros. Ou pelo menos ter TODO comentários onde eles não são seguros.

    
por Jan Fabry 26.11.2010 / 22:40
2

Eu postei um código em esse outro segmento que define um transitório com o tipo de postagem ao carregar uma imagem e, em seguida, verifica o valor desse transiente e ajusta o tamanho da pós-miniatura conforme o carregamento é concluído. Não é perfeito nem à prova de balas, mas deve demonstrar o conceito pelo menos.

    
por goldenapples 30.12.2010 / 00:41
0

Eu encontrei a seguinte solução. Ele cria imagens apenas para o tipo de postagem personalizada sem criar outras adicionais. O único problema é que, se você usar plugins como campos personalizados avançados, ao tentar renderizar o campo gallery, ele mostrará apenas os tamanhos padrão de imagens do wordpress: 'thumbnail', 'medium', 'large' e você não poderá acessar os tamanhos de imagem personalizados criados .

if ( function_exists ('add_image_size') ) {

function remove_default_img($sizes) {
    unset( $sizes['medium']);
    unset( $sizes['large']); 
    return $sizes;
}
add_filter('intermediate_image_sizes_advanced', 'remove_default_img');

$type = get_post_type($_REQUEST['post_id']);
// Post_Name Image Sizes ======================================================
if ( $type === "Custom_Post_Name" || $post_type === "Custom_Post_Name" ) {
add_image_size('custom_size_img', 165, 249, true);
}

}

    
por No0n 22.05.2014 / 19:16