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:
- La libreria GD Image di PHP.
- Una directory chiamata
cache
con i permessi775
da creare nella stessa directory in cui avete caricato il filetimthumb.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.