WordPress: usare correttamente la libreria TimThumb

Nonostante i suoi passati problemi di sicurezza (gravissimi), la libreria PHP TimThumb continua ad essere la più usata in molti temi di WordPress per ridimensionare le immagini. In questo articolo vedremo come integrarla nei nostri temi.

Requisiti

I requisiti di TimThumb sono essenzialmente due:

  1. La libreria GD Image di PHP.
  2. Una directory chiamata cache con i permessi 775 da creare nella stessa directory in cui avete caricato il file timthumb.php.

Funzionamento

TimThumb funziona in questo modo: passate allo script l'URL dell'immagine da ridimensionare seguito da una serie di parametri. I parametri più importanti sono:

  • src — Si tratta dell'URL dell'immagine da ridimensionare ed è l'unico parametro obbligatorio. Se non vengono passati altri parametri, l'immagine sarà ridimensionata a 100x100 pixel.
  • w — La larghezza dell'immagine ridimensionata.
  • h — L'altezza dell'immagine ridimensionata.
  • q — La qualità dell'immagine ridimensionata, dove 100 è il valore massimo.

Esempio:


<img src="http://sito.test/wp-content/themes/tema/inc/timthumb.php?src=http://sito.test/wp-content/uploads/2014/03/test.jpg&w=960&h=300&q=100"  alt="" />

Uso in WordPress

Dobbiamo essenzialmente ottenere l'URL dell'immagine in evidenza dei post da passare a TimThumb:


<?php
$thumb_id = get_post_thumbnail_id( get_the_ID() );
$image = wp_get_attachment_image_src( $thumb_id, 'full' );
$image_src = $image[0];
$src = get_template_directory_uri() . '/inc/timthumb.php?src=' . $image_src . '&w=960&h=300&q=100';
?>
<img src="<?php echo $src; ?>" alt="" />

Sicurezza

Dato che questa libreria lavora su richieste GET e dato che a differenza dei plugin di WordPress la frequenza degli aggiornamenti è più difficile da seguire e monitorare, una soluzione da adottare è quella di limitare le richieste al solo ed unico ambito del nostro sito.

Potete usare il file .htaccess per questo scopo nella directory dove risiede TimThumb:


<Files timthumb.php>
 Order deny, allow
 Deny from all
 allow from 123.123.123.123
</Files>

Sostituite l'IP con quello del vostro server. In questo modo non sarà più possibile l'accesso da remoto.

Torna su