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.
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.
É, passei a usar o bfi_thumb em blogs.
O que é Loop?
É onde o WordPress renderiza as informações: http://codex.wordpress.org/pt-br:O_Loop