Post correlati su WordPress senza plugin!
WordPress non fornisce nativamente una funzione per ottenere la lista dei post correlati, quindi bisogna ricorrere all’installazione di un plugin. A volte però non è necessario, basta qualche riga di PHP per ottenere ciò che fa al caso nostro.
I plugin infatti appesantiscono il sito, il pannello di amministrazione e non sono completamente configurabili. Nella maggior parte dei casi qualche semplice funzione da inserire nel file functions.php del nostro tema risolve ogni problema!
Per ottenere una lista di post correlati, secondo la categoria, basta questa funzione:
function relatedPost($postObj, $postNumber = 4){
if ($categories = get_the_category($postObj->ID))
{
$categoryIds = array();
foreach($categories as $category)
{
$categoryIds[] = $category->term_id;
}
$query = new wp_query(array(
'category__in' => $category_ids,
'post__not_in' => array($postObj->ID),
'posts_per_page'=> $postNumber,
'caller_get_posts'=> 1
));
if($query->have_posts())
{
while($query->have_posts())
{
$query->the_post();
echo '<li><a href="'.get_permalink().'" title="'.get_the_title().'">'.get_the_title().'</a></li>';
}
}
}
wp_reset_query();
}
L’utilizzo è molto semplice, richiamando la funzione passandole l’oggetto $post e volendo anche il numero di post da elencare (di default è 4) stamperà la lista di post correlati.
<div> <h3>Aspetta! c'è dell'altro!</h3> <?php relatedPost($post); ?> </div>
La funzione è molto semplice, ottiene le categorie dal post attuale attraverso l’oggetto $postObj, poi istanzia un oggetto wp_query che si occupa di cercare nel database gli articoli delle stesse categorie. Attraverso poi il ciclo finale vengono stampati i link grazie alla solite funzioni di wordpress.
Ovviamente nulla impedisce di creare una stessa funzione che invece cerchi in base ai tags. Oppure categorie e tags insieme. Su questo sito sto usando quella che ho pubblicato, che cerca in base alle categorie. Secondo voi quale può essere meglio?