O timthumb é o script favorito para redimensionar imagens “on-the-fly” (na hora). Apesar de alguns problemas de segurança no passado, que já foram corrigidos pelo desenvolvedor, o sistema é usado em sites comuns, temas para wordpress, joomla, etc.

O problema é que as urls de imagens geradas por ele vem com query string (timthumb.php?src=http://site.com.br/img.png&w=123), ou seja, são “não amigáveis” em termos de SEO. Algumas ferramentas de análise de site como Pingdom acusam as urls com “?” na seção “Remove query strings from static resources”.

Mas tem como cuidar disso usando .htaccess.

Para que funcione, é preciso que o timthumb esteja em uma pasta na raiz do seu site em uma pasta chamada img.

Para sites usando WordPress

Você precisa adicionar apenas 2 linhas. Uma linha para dizer ao WP deixar de fora o diretório “img”:RewriteCond %{REQUEST_URI} !^/(img) [NC]. A segunda linha informa como processar as urls que vamos formar: RewriteRule ^img/(.*)x(.*)/r/(.*) img/timthumb.php?src=http://site.com/$3&w=$1&h=$2&zc=1.

Troque o site.com pelo endereço do seu site.

# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/(img) [NC]
RewriteRule . /index.php [L]
RewriteRule ^img/(.*)x(.*)/r/(.*) img/timthumb.php?src=http://site.com/$3&w=$1&h=$2&zc=1
# END WordPress

O próximo passo é aplicar o Timthumb em imagens. Vou dar um exemplo usando a função thumbnail nativa do WP.

Usando uma função

Para facilitar sua vida, você pode criar esta função no seu functions.php e chamar sempre que for conveniente. No exemplo abaixo, configurei uma imagem padrão para posts que não tenham uma.

<?php
function miniatura ($id,$largura,$altura) {    
    $src = wp_get_attachment_image_src( get_post_thumbnail_id($id), full);
    $imagem = $src[0];     
    if ($imagem == ''){ $imagem = 'http://site.com/imagem-padrao.png'; } 
    $imagem = str_replace(array('http://site.com', 'http://www.site.com/'), array('',''), $imagem);    
    $tim = get_bloginfo('url').'/img/'.$largura.'x'.$altura.'/r'.$imagem;    
    $img = '<img src="'.$tim.'" width="'.$largura.'" height="'.$altura.'" />';
    echo $img; 
}
?>

Para chamar a função, cole dentro de qualquer loop do WP o código abaixo:

<?php miniatura($post->ID,'640','225'); ?>

Sintaxe: miniatura(‘id do post, ‘largura’, ‘altura’);

O resultado seria uma imagem com o seguinte formato:

http://site.com/img/640x225/r/wp-content/uploads/2013/10/imagem.jpg

Você pode alterar os parâmetros no htaccess normalmente, usando as variáveis disponíveis no script. Mais informações sobre os parâmetros, você encontra no site do TimThumb.

Este artigo tem 5 comentários

  1. Guilherme Euler Responder

    O Timthumb é realmente uma ferramenta fantástica, porém no WordPress recomendo a utilização das próprias configurações de imagens do WordPress… é muito fácil mexer com elas e já são criadas logo após o upload da imagem. Super prático.

Comente

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *