WordPress random post thumbnails

Uno scoglio sul quale mi areno ogni volta che progetto un template è il footer: non ho mai la più pallida idea di come riempirlo. L’altro giorno mi è venuta un’idea carina, una galleria che proponesse un post a caso sotto forma di immagini, utilizzando in automatico la prima immagine del post.

wordpress

La prima cosa che ho fatto è stata quella di andare alla ricerca di un plugin che facesse quello che desideravo. Purtroppo però non sono riuscita a trovare niente che facesse al caso mio. In compenso ho trovato un articolo di Wolly che conteneva il codice per mostrare un’immagine a caso tra quelle contenute nel nostro database:

&lt; ?php $hilite = $wpdb-&gt;get_var( "SELECT ID FROM $wpdb-&gt;posts WHERE post_type = 'attachment' ORDER BY RAND() LIMIT 1" ); echo '<a href="' . get_permalink($hilite) . '">' . wp_get_attachment_image( $hilite, 'thumbnail' ) . '</a>'; ?&gt;

Il pregio di questo codice è che non deve essere necessariamente inserito all’interno del loop WordPress (quindi nel footer va benissimo), il difetto è che il link delle immagini riporta ad una pagina del nostro blog contenente solo l’immagine stessa.

Mi è allora venuto in aiuto Stefano di Asteriscoweb che ha creato questo codice che funziona perfettamente:

<ul class="random_thumb">
 
 'attachment',
	'numberposts' =&gt; $n,
	'post_status' =&gt; null,
	'post_parent' =&gt; null,
	'orderby' =&gt; 'rand',
	);
 
$att = get_posts($args);
 
foreach($att as $data){
 
	$img = wp_get_attachment_image_src($data-&gt;ID, 'thumbnail');
	$img_url = $img[0];
	$img_w = $img[1];
	$img_h = $img[2];
	$img_alt = $data-&gt;post_title;
 
	$url = get_permalink($data-&gt;post_parent);
	$title = get_the_title($data-&gt;post_parent);
 
	echo "\t
	<li>";
	echo "";
	echo "</li>
\n";
 
}
 
?&gt;</ul>

Basterà inserirlo dove vogliamo appaia la galleria e modificare il valore di $n per impostare il numero di immagini da visualizzare. Per quanto riguarda l’aspetto agiremo tramite CSS sull’attributo .random_thumb più o meno in questo modo:

.random_thumb {
	margin-left:10px;
    padding:0;
	width:960px;}
 
.random_thumb li {
	height:100px;
	width:100px;
	display:inline;}
 
.random_thumb img {
	margin: 0 10px 0 10px;
	background-color: #999;
    padding:5px;}
 
.random_thumb img:hover {
	background-color: #666;}

Ringrazio ancora Stefano sia per il codice sia per avermi indicato qualche buon libro per cominciare a studiarmi un pò di PHP :)

Potrebbe interessarti anche

Questo post ha 5 commenti

  1. dreN >> Wordpress random post thumbnails scrive:

    [...] a vedere articolo: dreN >> WordPress random post thumbnails Articoli correlati: Guida a WordPress per principianti, come installare e creare un [...]

  2. Per il problema dell’attributo title prova ad usare get_the_title() passandogli l’ID del post a cui ti riferisci che dando uno sguardo al codice dovresti essertelo ricavato tramite $myData->postID.

    Ora veniamo ai miei dubbi sul codice che hai scritto:

    Perchè mai istanziare una query per ogni risultato? Così vai interrogare n volte il database inutilmente e vai a riscrivere sostanzialmente n volte lo stesso codice: è un po’ uno spreco. Sarebbe più logico e funzionale scrivere una query che ci selezioni esattamente gli n elementi che ci servono e li visualizzi tramite un loop. Io proverei a riscrivere il tutto magari sfruttando anche WP_Query. Se ti serve una mano chiedi, magari cerco di buttare giù qualche riga di codice.

    P.S. scusa i miei deliri da informatico/nerd :P

  3. Problemi con CSS, HTML, PHP e altra roba da nerd?! Chiedete agli esperti! - Commenta la tecnologia, la telefonia, i software scrive:

    [...] WordPress random post thumbnails [...]

  4. g scrive:

    credo ci sia qualcosa di sbagliato in questo script…

Lascia un commento