Creare Widget per visualizzare i Post Correlati in WordPress
Jan
20102
Questo post ha l’obbiettivo di illustrare come implementare un Widget WordPress per visualizzare sulla sidebar, gli argomenti correlati ad un certo post che si sta visualizzando. Prima di entrare nel dettaglio, se siete alle prime armi con la realizzazione di Widgets, vi consiglio di dare uno sguardo al post: “Creare il primo Widget per WordPress“.
Vi consiglio prima di tutto di scaricare il widget tramite Questo Link e di installarlo per testarne la funzionalità.
L’ idea alla base è quella di modificare la query di selezione dei post da visualizzare, in base alle impostazioni inserite lato amministrazione.
Analiziamo alcuni rami di codice estratti dalla funzione “widget()”.
...
global $post;
$category = get_the_category($post->ID);
$cat = $category[0]->cat_ID;
$numPosts = $instance['numPosts'];
$searchCategory = isset( $instance['searchCategory']) ? $instance['searchCategory'] : false;
$orderRandom = isset( $instance['orderRandom']) ? $instance['orderRandom'] : false;
$query1 = "numberposts=$numPosts";
if( $searchCategory ){
$query = $query1 . '&category=' . $cat .'&exclude=' . $post->ID ;
}if( $orderRandom ){
$queryRandom = $query1 . '&orderby=rand';
}
...
Come si può osservare da questo frammento di codice, la query di selezione è costituita da una parte fissa che imposta il numro massimo di post da visualizzare ($query1) e da una parte variabile che dipende dai valori delle variabili $instance['orderRandom'] e $instance['searchCategory'] che sono i valori impostati lato amministrazione. Tali variabili si riferiscono rispettivamente ad effettuare una query in base alla categoria del post corrente oppure effettuare una query random sui vari post disponibili. Chiaramente i due criteri possono coesistere.
Il prossimo frammento di codice si riferisce alla visualizzazione del risultato della query scelta in base ai criteri di selezione precedenti.
...
if ( is_single() and $searchCategory ) {
$myposts = get_posts($query);?>
<? foreach($myposts as $post) :
setup_postdata($post); ?>
<a href="<? echo the_permalink(); ?>">
<? echo the_title(); ?></a>
<? endforeach; ?>
<? }
if( $orderRandom ) {
$myposts = get_posts($queryRandom);?>
<? foreach($myposts as $post) :
setup_postdata($post); ?>
<a href="<? echo the_permalink(); ?>">
<? echo the_title(); ?></a>
<? endforeach; ?>
<? }
...
Per default quindi il widget permetterà di visualizzare un certo numero di post che appartengano alla stessa categoria del post corrente. Chiaramente nella lista non apparirà il link al post viualizzato perchè sarebbe ridondante. Il filtraggio dei post da visualizzare viene effettuato nell’ impostazione della query:
$query = $query1 . '&category=' . $cat .'&exclude=' . $post->ID ;
in cui il parametro category viene impostato alla categoria del post visualizzato, il parametro exclude viene impostato invece all’ identificativo del post correntemente visualizzato in modo da escluderlo dal risultato della query.
Infine, se nel form di amministrazione del widget viene selezionata l’opzione “Random Search” , la variabile $instance['orderRandom'] verrà valorizzata a true, coò comporterà che anche la variabile $orderRandom verrà impostata a true tramite la chiamata della funzione isset( $instance['orderRandom']) ? $instance['orderRandom'] : false;. Questo comporta l’ingresso nel ramo if( $orderRandom ) .... { e quindi la visualizzazione dei post a random sulla sidebar. Il numero di post da visualizzare viene impostata dalla variabile $numPosts.
Spero che sia tutto chiaro se ci sono problemi o bug non esitate a contattarmi!











Commenti
2 Trackback / Pingback per questo articolo:
January 3rd, 2010 on 20:26
Creare Widget per visualizzare i Post Correlati in WordPress…
Questo post ha l’obbiettivo di illustrare come implementare un Widget WordPress per visualizzare sulla sidebar, gli argomenti correlati ad un certo post che si sta visualizzando. L’ idea alla base è quella di modificare la query di selezione dei post…
June 10th, 2010 on 00:54
[...] un po’ di codice PHP, vi consiglio di dare un occhiata a due post interessanti pubblicati sul gurucoder.org (post correlati per categoria) e kifulab.net (post correlati per tag) che spiegamo come crearsi da [...]