Come selezionare un’immagine random dalla libreria media di wordpress?
Se vogliamo selezionare un’immagine random dalla libreria media di Wordpress abbiamo 2 possibilità:
- Utilizzare la funzione WP_Query che ci torna l’url dell’immagine
- Utilizzare una query custom per prendere l’id dell’immagine
La differenza tra i due metodi è sostanzialmente che il primo, tornandoci l’url dell’immagine, sarà più macchinoso se volessimo prendere la sua thumbnail. Dovremo quindi creare una funzione ad hoc che tramite l’url dell’immagine ci ritorna l’id e poi richiamare la funzione nativa di wordpress “wp_get_attachment_image“.
La funzione del primo metodo è:
function get_images_from_media_library() { $args = array( 'post_type' => 'attachment', 'post_mime_type' =>'image', 'post_status' => 'inherit', 'posts_per_page' => 1, 'orderby' => 'rand' ); $query_images = new WP_Query( $args ); $images = array(); foreach ( $query_images->posts as $image) { $images[]= $image->guid; } return $images; } $imgs = get_images_from_media_library(); foreach($imgs as $img) { echo '<img src="' . $img . '" alt="" /> }
Questo codice è stato preso come spunto dal sito di Gabriele Romano al seguente link: http://gabrieleromanato.com/2011/12/wordpress-creare-una-galleria-di-immagini-casuali-prese-dalla-media-library-libreria-media/
Il secondo metodo invece sfrutta una query custom per prendere le immagini dalla libreria media e ritornarci un valore random:
function image_random(){ global $wpdb; $_query = $wpdb->get_results("SELECT ID FROM $wpdb->posts AS posts WHERE posts.post_type = 'attachment' AND posts.post_mime_type IN ('image/jpeg','image/gif','image/jpg','image/png')",ARRAY_N); $random = array_rand($_query); //ritorniamo l'id dell'immagine return $_query[$random][0]; } //richiamiamo la funzione $image_ID = image_random(); echo wp_get_attachment_image($image_ID,'thumbnail');
Questo metodo è secondo noi molto più semplice dato che possiamo poi cambiare il tipo di immagine di cui abbiamo bisogno senza aver necessità di creare altre funzioni ad hoc come per il primo metodo. Cambiando il parametro della funzione wp_get_attachment_image( $attachment_id, $size) con quelli possibili cioè thumbnail, medium, large or full come nell’esempio seguente:
$image_ID = image_random(); echo wp_get_attachment_image($image_ID,'medium');
avremo la dimensione desiderata dell’immagine.