WordPress: creare una galleria di immagini casuali prese dalla Media Library (Libreria Media)

Vogliamo creare una galleria di immagini in ordine casuale in cui le immagini vengano prese dalla Media Library (Libreria Media) di WordPress. Estrarre le immagini non è difficile se si considera il fatto che WordPress le considera come un post di tipo attachment (allegato) e che il loro tipo MIME deve essere image. Delle immagini a noi interessa principalmente il parametro dell'URL che punta alla loro posizione nella directory degli upload, ossia il guid. Vediamo come fare.

Nel file functions.php del nostro tema definiamo due funzioni, una per reperire gli URL delle immagini e l'altra per creare la galleria:


function get_images_from_media_library() {
    $args = array(
        'post_type' => 'attachment',
        'post_mime_type' =>'image',
        'post_status' => 'inherit',
        'posts_per_page' => 5,
        'orderby' => 'rand'
    );
    $query_images = new WP_Query( $args );
    $images = array();
    foreach ( $query_images->posts as $image) {
        $images[]= $image->guid;
    }
    return $images;
}

function display_images_from_media_library() {

	$imgs = get_images_from_media_library();
	$html = '<div id="media-gallery">';
	
	foreach($imgs as $img) {
	
		$html .= '<img src="' . $img . '" alt="" />';
	
	}
	
	$html .= '</div>';
	
	return $html;

}

Definiamo a questo punto degli stili CSS per la visualizzazione della galleria:


#media-gallery {
	height: 130px;
	background: #ccc;
	padding: 1em;
}

#media-gallery img {
	float: left;
	width: 20%;
	height: 130px;
}

Quindi scegliamo una posizione nel nostro tema dove inserire la galleria (per esempio nel file header.php) e la richiamiamo come segue:


<?php echo display_images_from_media_library();?>

E questo è il risultato:

[caption id="attachment_2321" align="aligncenter" width="1000" caption="La galleria di immagini casuali con gli stili CSS applicati"][/caption]
Torna su