Gestire le immagini su WordPress: Cleverthumb versione 2
Gestire le immagini su WordPress può essere impegnativo. Spesso si ha la necessità di avere a disposizione le immagini contenute nel testo dell’articolo o semplicemente quelle allegate al post. Ma cosa succede se facciamo uso di immagini esterne o se i nostri autori fanno il copia&incolla di testo da altre fonti contenenti immagini? CleverThumb è una funzione che in questi casi può esservi di aiuto!
Tempo fa avevo pubblicato un articolo dove spiegavo il funzionamento di cleverthumb, una funzione di mia creazione. Oggi siamo arrivati alla versione 2 che contiene alcuni miglioramenti sostanziali.
Funzionamento
CleverThumb è una funzione che va inserita nel file functions.php all’interno del tema corrente di WordPress. Passando a questa funzione l’id del post, CleverThumb riesce a restituire la prima immagine utile, ridimensionata secondo le misure passate come parametro. Inoltre la miniatura (thumbnail) viene messa nella cache: tutte le richieste successive alla prima faranno uso dell’immagine già creata, riducendo così le risorse necessarie.
Rispetto alla versione precedente, CleverThumb2 si è adattata alle nuove funzionalità di WordPress, cercando le immagini allegate al post (attachment). Inoltre, in presenza di immagini esterne, cerca di scaricarle sul server locale.
La funzione ha due blocchi logici principali: la ricerca dell’immagine e il suo ridimensionamento. La ricerca dell’immagine segue questo iter:
- Viene cercata la prima immagine in allegato al post
- Viene parserizzato il testo alla ricerca di tag IMG
- Se l’immagine trovata negli step 1 o 2 è esterna, viene scaricata sul server locale
Parametri di CleverThumb
I parametri della funzione sono:
- id: l’id del post
- width: la larghezza della miniatura risultante
- height: l’altezza della miniatura risultante
- only_src: se true, viene restituito solo il path della miniatura, altrimenti viene generato l’intero markup IMG
- alt: l’attributo alt del markup IMG
- attr: altri attributi del markup IMG
Impostazioni iniziali
La funzione va incollata nel file functions.php all’interno del tema corrente di WordPress (wp-content/themes/xxx/functions.php).
Dovete anche caricare il file class.ImageToolbox.php e configurare la variabile, indicando l’esatta posizione della classe ImageToolBox.
Per ultimo, dovete specificare dove andranno salvati i thumbnail: è una cartella a vostra scelta che dovrà avere i permessi di scrittura 777.
Sorgente e Download del pacchetto
Potete scaricare il pacchetto completo (funzione e classe ImageToolBox) oppure analizzare semplicemente il codice sorgente:
function cleverThumb($id, $width=50, $height=50, $only_src=false, $alt="", $attr=""){
//ini_set('display_errors', 1);
global $wpdb;
/* CONFIGURE THESE VARIABLES */
# Set the path where the class.ImageToolbox.php is
$imageToolBox_path = dirname(__FILE__)."/scripts/class.ImageToolbox.php";
# Set the destination path where the thumbs will be saved
$synPublicPath = "/wp-content/uploads/thumbs/";
/* STOP. Modify at your own risk */
include_once ($imageToolBox_path);
$src="";
$images = get_children(array('post_parent' => $id,'post_status' => 'inherit','post_type' => 'attachment','post_mime_type' => 'image','order' => 'ASC','orderby' => 'menu_order'));
if ( $images ) {
//echo "<pre>";print_r($images);echo "</pre>";
$images=array_reverse($images);
$image=array_pop($images);
$img = wp_get_attachment_image_src( $image->ID, 'full' );
$image_src=$img[0];
}
if ($image_src=="") {
$the_content =$wpdb->get_var("SELECT post_content FROM $wpdb->posts WHERE ID = $id");
$pattern = '!<img.*?src="(.*?)"!';
preg_match_all($pattern, $the_content, $matches);
$image_src = $matches['1'][0];
}
if ($image_src=="") return;
$image_src_arr = parse_url($image_src);
if ($image_src_arr['host']!="" and false) {
$loc=$synPublicPath.str_replace(array('/','+'),'-',$image_src_arr['path']);
if (!file_exists($_SERVER['DOCUMENT_ROOT'].$loc)) {
if( ini_get('allow_url_fopen') ) {
copy($image_src, getenv("DOCUMENT_ROOT").$loc);
} else return;
}
$image_src = $loc;
$image_src_arr = parse_url($image_src);
}
$img=$image_src_arr["path"];
$imgArr = @getimagesize(getenv("DOCUMENT_ROOT").$img);
$resultimg = $synPublicPath.$imgArr[0]."x".$imgArr[1]."-".basename($img);
$typeArr=split("/",$imgArr['mime']);
$type=$typeArr[1];
if (!file_exists($_SERVER['DOCUMENT_ROOT'].$img)) return;
$tmb_exists = file_exists($_SERVER['DOCUMENT_ROOT'].$resultimg);
$img_created = date("Y-m-d H:i:s", @filectime($_SERVER['DOCUMENT_ROOT'].$img));
$tmb_created = date("Y-m-d H:i:s", @filectime($_SERVER['DOCUMENT_ROOT'].$resultimg));
$imgArr = @getimagesize(getenv("DOCUMENT_ROOT").$resultimg);
if ($tmb_exists) $sameSize= ($imgArr["width"]==$width) and ($imgArr["height"]==$height);
if (!$tmb_exists || ($tmb_exists && ($img_created > $tmb_created)) || !$sameSize ){
$thumbnail = new Image_Toolbox(getenv("DOCUMENT_ROOT").$img);
$thumbnail-> setResizeMethod('resample');
$thumbnail-> newOutputSize($width, $height, 1, false, '#FFFFFF');
$thumbnail-> save(getenv("DOCUMENT_ROOT")."/".$resultimg, $type);
}
if ($only_src===true) return $resultimg;
else return "<img src=\"".$resultimg."\" alt=\"".str_replace("\"","",htmlentities($alt))."\" ".$attr."/>";
}
Articoli che potrebbero interessarti...
CleverThumb: una funzione WordPress per gestire le immagini
Spesso capita di dover personalizzare il proprio blog inserendo viste di articoli come gli articoli più popolari, gli articoli correlati o i più commentati. Oltre al titolo è sempre consigliato inserire anche un’immagine dell’articolo,…
immagini, miniature, thumbnail, wordpress
WordPress plugin: Related Post with Thumbnail
Related Post with Thumbnail is a new Wordpress plugin that returns a list of the related entries based on active/passive keyword matches and show the first available image. It can generate a custom sized thumbnail. Based on an original plugin of Alexander Malov & Mike Lu (v. 2.02)
related-post, thumbnail, wordpress-plugin
5 strumenti gratuiti per gestire la tua libreria musicale!
Tutti ormai abbiamo a disposizione una moltitudine di risorse per procurarci la nostra musica preferita, anche a costo zero. È anche vero però che non sempre questi file si presentano in iTunes o windows…
cover fetcher, itunes, mp3 archiver, mp3 tag, music bee, musica, muzic brain picard, tag, windows media player
Immagini in anteprima direttamente da Windows Explorer
Xentient Thumbnails è un'utility gratuita in grado di rimpiazzare le generiche icone di windows explorer con le miniature (thumbnail) delle immagini stesse.
jpg, miniature, windows-explorer, Xentient-Thumbnails, xp
Photoshop express: ecco la versione online
Adobe sembra stia lavorando alla versione online del suo celebre software di fotoritocco. Sarà chiamato Photoshop Express, sebbene non sia un progetto pubblico, sembra avere i giusti presupposti per diventare una delle migliori applicazioni web per l'editing delle immagini.
adobe, editing-immagini, fotoritocco, photoshop-express
Google Earth 5: ecco la nuova versione da scaricare
Google Earth 5 è stato rilasciato lunedì 2 Febbraio. Leggendo i commenti sulla rete, sembra che l'impressione diffusa sia veramente positiva, soprattutto per le nuove caratteristiche, ovvero l'esplorazione degli oceani, la possibilità di registrare i viaggi, l'archivio storico fotografico, e marte in 3D.
google earth 5, mappe, scaricare, vista-dal-satellite

[...] Gestire le immagini su WordPress: Cleverthumb versione 2 Una funzione per WordPress che crea una thumb prendendo la prima immagine del post. [...]
Sicuramente lo proverò prima possibile. Potrebbe essere un’ottima alternativa a timthumb, giusto?
@Erriko: sì, esattamente. E’ un’alternativa a timthumb… ma ovviamente la mia è la soluzione migliore :-)
Non lo dubitavo, per questo voglio provarla immediatamente, così su due piedi mi è sembrato allettante…