O seu sité ainda usa timthumb.php? Está em risco. Um guia para gestão nativa de media, WebP/AVIF é add_image_size().
PT-PT

TimThumb morreu! Como lidar com imagens no WordPress (guia 2026)

5.00 /5 - (26 votes )
Última verificação: 1 de maio de 2026
4min de leitura
Guia
Desenvolvedor full-stack

Se é um veterano do WordPress, certamente lembra-se do TimThumb. Era um pequeno script PHP encontrado em quase todos os “temas premium” por volta de 2010. Ele permitia cortar e redimensionar imagens “on the fly” fácilmente.

Em 2011, foi descoberta uma vulnerabilidade crítica Zero-Day nele, permitindo que hackers comprometessem milhões de sites. Isso marçou o fim da era dos “scripts simples”.

Hoje, em 2026, o WordPress possui um poderoso motor de gestão de media. Sé ainda vê timthumb.php no seu tema – apague-o imediatamente. Neste guia, vou mostrar-lhe como fazer isso profissionalmente.


#Por qué o TimThumb era mau?

O TimThumb funcionava “on the fly”: pegava numa imagem dé um URL, processava-a e guardava-a numa cache. Problemas:

  1. Segurança: Permitia Execução Remota de Código (RCE) se não fosse perfeitamente configurado.
  2. Performance: Sobrecarregava o servidor PHP a cada novo pedido de imagem.
  3. Sem Integração: Não reconhecia a Biblioteca de Media do WordPress.

#Método 1: Tamanhos nativos (add_image_size)

O WordPress tem a função add_image_size() há anos. Ela permite definir formatos qué o sistema gerará automáticamente duranté o upload.

#No functions.php:

function wppoland_setup_theme() {
    // Ativar suporte para imagens de destaque (post thumbnails)
    add_theme_support( 'post-thumbnails' );

    // Tamanhos padrão (soft crop - mantém proporção)
    add_image_size( 'blog-list', 800, 400 ); 

    // Hard Crop (corta o excesso)
    // O WordPress cortará exatamenté o centro da imagem
    add_image_size( 'team-member', 300, 300, true ); 
    
    // Corte com posicionamento (ex: do topo, da esquerda)
    add_image_size( 'hero-banner', 1920, 600, ['center', 'top'] );
}
add_action( 'after_setup_theme', 'wppoland_setup_theme' );

#No ficheiro de template (ex: Single.php):

if ( has_post_thumbnail() ) {
    the_post_thumbnail( 'hero-banner', ['class' => 'img-fluid'] );
}

Vantagem: As imagens são geradas uma vez (duranté o upload). São servidas como ficheiros estáticos prontos. Zero carga de PHP ao exibir.


#Método 2: Geração “on-the-fly”

Tamanhos nativos têm uma desvantagem: se mudar de tema, tem de regenerar as miniaturas (ex: com o plugin Regenerate Thumbnails), o que demora eternidades para uma biblioteca de 100GB.

Em 2026, servidores são rápidos e CDNs são baratos. Muitas vezes usamos uma abordagem híbrida ou serviços externos.

#Solução: Cloudflare / CDN

Em vez de sobrecarregar o seu servidor PHP, use parâmetros de URL.

<img src="https://oseusite.pt/wp-content/uploads/imagem.jpg?width=400&height=300&format=avif">

A maioria dos alojamentos WordPress em 2026 (Kinsta, WP Engine, Cloudways) oferece isto como padrão. Não precisa dé um script PHP no seu servidor!


#Método 3: Atributos srcset e sizes

O WordPress gera automáticamenté o atributo srcset para as suas imagens, permitindo qué o navegador escolha o tamanho apropriado para o dispositivo (telemóvel vs desktop 4K).

<!-- O WordPress gera isto automáticamente: -->
<img src="imagem-800x400.jpg" 
     srcset="imagem-300x150.jpg 300w, 
             imagem-800x400.jpg 800w, 
             imagem-1024x512.jpg 1024w"
     sizes="(max-width: 600px) 100vw, 800px">

O seu trabalho como programador é apenas definir corretamente sizes usando o filtro wp_calculate_image_sizes.


#Otimização: WEBP e AVIF

Em 2026, JPG e PNG são relíquias para fotos. O WordPress suporta nativamente WebP (desdé a versão 5.8) e AVIF (desdé a versão 6.5).

Não precisa de plugins. Basta fazer upload dé um ficheiro AVIF, é o WordPress lida com ele. Ou usé um plugin (como Performance Lab) para converter JPGs antigos em AVIF automáticamente duranté o upload.


#Limpeza (remover TimThumb)

Se herdou um projeto antigo:

  1. Scan: Pesquise no diretório wp-content por timthumb.php ou thumb.php.
  2. Apagar: Apagué o ficheiro.
  3. Corrigir: Encontré onde era chamado no código:
    // CÓDIGO ANTIGO (MAU)
    <img src="<?php echo get_template_directory_uri(); ?>/timthumb.php?src=..." />
    
    // SUBSTITUIR POR (BOM)
    <?php the_post_thumbnail( 'o-meu-tamanho' ); ?>
  4. Regenerar: Instale WP-CLI e execute wp media regenerate.

#Resumo

A história do TimThumb é uma lição de humildade. Conveniência (escala on-the-fly) não pode estar acima da segurança. temos add_image_size() nativo, srcset responsivo e CDNs a processar imagens na nuvem. Não há razão para voltar a soluções de há 15 anos atrás.

Exploré os nossos otimização de velocidade WordPress para levar o seu projeto mais longe.

Próximo passo

Transforme o artigo numa implementação real

Este bloco reforça a ligação interna e conduz o leitor para o passo seguinte mais útil dentro da arquitetura do site.

Cluster relacionado

Explorar outros serviços WordPress e base de conhecimento

Reforce o seu negócio com suporte técnico profissional em áreas-chave do ecossistema WordPress.

FAQ do artigo

Perguntas Frequentes

Respostas práticas para aplicar o tema na execução real.

SEO-ready GEO-ready AEO-ready 3 Q&A
Porque deixou o TimThumb de ser recomendado?
Porque introduziu riscos de segurança sérios é uma arquitetura frágil para redimensionamento de imagens em produção."
Qual é a alternativa nativa no WordPress?
O uso dé add_image_size, thumbnails nativos e funções da biblioteca de media do próprio WordPress."
Valé a pena continuar a gerar imagens on the fly?
Só em casos muito específicos. Na maioria dos projetos é melhor gerar tamanhos no upload e servir ficheiros estáticos."

Precisa de FAQ adaptado ao setor e mercado? Criamos uma versão alinhada com os seus objetivos de negócio.

Fale connosco

Artigos Relacionados

WordPress 7.0 com AI Client vs Astro 6 após aquisição pela Cloudflare. Comparação de velocidade, custos, SEO e segurança. A minha perspetiva após 20 anos como programador WP - quando migrar e quando ficar.
wordpress

WordPress 7.0 vs Astro 6 após aquisição pela Cloudflare - quem vence em 2026?

WordPress 7.0 com AI Client vs Astro 6 após aquisição pela Cloudflare. Comparação de velocidade, custos, SEO e segurança. A minha perspetiva após 20 anos como programador WP - quando migrar e quando ficar.

Pare de escrever instruções if desarrumadas. Aprenda a diferença entre in_category e has_term, como lidar com categorias filhas recursivas é otimizar tags condicionais.
development

Lógica condicional WordPress para categorias e taxonomias

Pare de escrever instruções if desarrumadas. Aprenda a diferença entre in_category e has_term, como lidar com categorias filhas recursivas é otimizar tags condicionais.

Dominé o Loop do WordPress. Aprenda a escrever argumentos WP_Query dé alta performance, evité armadilhas SQL e pagine loops personalizados corretamente.
development

O guia definitivo para wp_Query e the loop (edição 2026)

Dominé o Loop do WordPress. Aprenda a escrever argumentos WP_Query dé alta performance, evité armadilhas SQL e pagine loops personalizados corretamente.