WordPress: metadati delle immagini per slideshow flessibili

WordPress: metadati delle immagini per slideshow flessibili

La funzione di WordPress wp_get_attachment_metadata() si rivela fondamentale per creare slideshow che si adattino alle immagini e non il contrario. Infatti molti plugin per WordPress presuppongono che le immagini allegate ai post siano della dimensione ideale per lo slideshow, ma molto spesso non è così. Spetta sempre a chi gestisce il sito il compito di uploadare e associare le immagini più adatte al post da inserire nel flusso dello slideshow. Ma se sul sito sono già presenti numerosi post ed immagini e il plugin viene inserito in un secondo tempo, ecco che sorge il problema di adattare le immagini al plugin. Vediamo come ovviare a questo problema.

Uso della funzione wp_get_attachment_metadata()

Questa funzione opera nel Loop ed ha bisogno come parametro fondamentale dell'ID dell'immagine allegata. Restituisce un array associativo contenente molte informazioni sull'immagine, comprese larghezza e altezza. Eccone un uso tipico:


$args = array(
   'post_type' => 'attachment',
   'numberposts' => -1,
   'post_status' => null,
   'post_parent' => $post->ID
);

$attachments = get_posts( $args );

if ( $attachments ) {

     foreach ( $attachments as $attachment ) {
     
         print_r(wp_get_attachment_metadata( $attachment->ID);
     }
}

Ed ecco l'output per l'immagine estrapolata dall'array:

Array ( [width] => 643 [height] => 125 
[hwstring_small] => height='24' width='128' 
[file] => 2011/12/css-vertical-caption.png 
[sizes] => Array ( [thumbnail] => Array ( [file] => css-vertical-caption-150x125.png [width] => 150 [height] => 125 ) 
[medium] => Array ( [file] => css-vertical-caption-300x58.png [width] => 300 [height] => 58 ) 
[small-feature] => Array ( [file] => css-vertical-caption-500x97.png [width] => 500 [height] => 97 ) ) 
[image_meta] => Array ( [aperture] => 0 [credit] => [camera] => [caption] => 
[created_timestamp] => 0 [copyright] => [focal_length] => 0 [iso] => 0 [shutter_speed] => 0 [title] => ) )

L'array associativo ha ogni tipo di informazione sull'immagine, ma a noi interessano solo la larghezza e altezza effettive:


$meta = wp_get_attachment_metadata($attachment->ID);
$width = $meta['width'];
$height = $meta['height'];

È chiaro che se conosciamo le dimensioni di ciascuna immagine allegata possiamo adattare lo slideshow all'immagine:

[php htmlscript="true"] <script type="text/javascript"> $(function() { $('#slider').sliderPlugin({ <?php if($width < 600 && $width > 490) { echo 'width: 500,' . "\n"; } else { echo 'width: 600,' . "\n"; } if($height < 300 && $height > 190) { echo 'height: 200' . "\n"; } else { echo 'height: 300' . "\n"; } ?> }); }); </script>

Ovviamente si tratta di un esempio molto rudimentale, ma vi consiglio di provare a sperimentare qualcosa con questa funzione per vederne i benefici.

Torna su