add_image_size () para tipos de postagem específicos

18
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. Que eu saiba, sou forçado a criar miniaturas para minhas imagens do Post nas dimensões 100x100 e também 50x100. E, para meus produtos, sou forçado a criar miniaturas de 80 x 80 e 100 x 100, mesmo que nunca as use.

Existe uma maneira de criar tamanhos de imagem baseados em tipos de postagem, para que você não acabe criando muitas imagens que não planeja usar e desperdiçando recursos que poderiam ser usados ​​em outros lugares?

Sampson
fonte
Eu encontrei exatamente a mesma necessidade.
MikeSchinkel
O que acontece se você usar esta função image_resize no tema nas partes em que precisa desse tamanho de imagem?, Também poderá escrever uma função abreviada para vários usos, dependendo do contexto.
Parece uma supervisão óbvia para mim, isso ainda não foi resolvido?
Nathan Hornby

Respostas:

12

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 carrega e os tamanhos intermediários de imagem são criados (quando você os adiciona por meio de "Novas mídias", eles nem sequer são anexados para qualquer postagem).

No entanto, recentemente criei dois plugins que, juntos, farão o que você deseja. Imagens intermediárias virtuais interceptam a criação dos tamanhos de imagem intermediárias: elas não serão criadas no disco, mas ainda existem na matriz de metadados. Isso faz o WordPress pensar que eles existem para que você possa usá-los como imagens normais. O plug - in complementar, On-Demand Resizer , criará tamanhos de imagem ausentes quando solicitados. Na primeira vez em que a imagem é solicitada, ela é criada, todas as solicitações subsequentes receberão apenas a imagem recém-criada.

Esses plug-ins precisam ser reescritos antes de colocá-los no diretório de plug-ins do WordPress, mas devem ser seguros. Ou pelo menos tenha TODOcomentários onde eles não são seguros.

Jan Fabry
fonte
Agradável!
MikeSchinkel
2

Publiquei algum código nesse outro encadeamento que define um transitório com o tipo de post ao enviar uma imagem e, em seguida, verifica o valor desse transitório e ajusta o tamanho da miniatura da postagem de acordo quando o upload é concluído. Não é perfeito ou à prova de balas, mas deve demonstrar pelo menos o conceito.

maçãs douradas
fonte
0

Eu vim com a seguinte solução. Ele cria imagens apenas para o tipo de postagem personalizado sem criar outras. O único problema é que, se você usar plug-ins como campos personalizados avançados, ao tentar renderizar o campo da galeria, ele exibirá apenas os tamanhos padrão de imagens do wordpress: 'thumbnail', 'medium', 'large' e você não poderá acessar os tamanhos de imagem de postagem 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);
}

}

No0n
fonte