Torna a Blog

WordPress: mostrare i post correlati per tag

I post correlati sono un elenco di articoli che trattano lo stesso argomento del post che stiamo leggendo.
In questo post mostreremo un esempio di come visualizzare i post correlati per tag.

Questo il codice completo:

ID);
	if ($posttags) {
		$tags = array();
		$blacklist = array('blacklist');
		foreach ($posttags as $t) {
			if(!in_array(strtolower($t->name),$blacklist)) {
				$tags[] = str_replace(' ','-',$t->name); 
			}
		}
		$ts = implode(",", $tags);
		$args = array(
				'numberposts' => 3,
				'tag'=> $ts,
				'exclude' => $post->ID,
				'orderby' => 'post_date',
				'order' => 'desc'
				);
		$related = get_posts($args); ?>
		
		
		
			
  • Articoli correlati

Analizziamo il codice:

global $post;
$posttags = wp_get_post_tags($post->ID);

Prima di tutto rendiamo globale la variabile $post per rendere disponibili i dati del post, mentre con la funzione wp_get_post_tags() recuperiamo i tag associati al post.

$tags = array();
$blacklist = array('blacklist');
foreach ($posttags as $t) {
	if(!in_array(strtolower($t->name),$blacklist)){
		$tags[] = str_replace(' ','-',$t->name); 
	}
}

Verificato che ci sono tag associati al post, possiamo impostare un controllo per escludere dei tag specifici dal filtro per correlare i post. Per impostare i tag da escludere, aggiungere i termini desiderati nell’array $blacklist. Inoltre, nel ciclo dove si filtrano i tag da eslcudere, con la funzione str_replace() convertiamo i gli spazi bianchi dei tag contenenti più parole, in modo da avere lo slug del tag.

$ts = implode(",", $tags);

Creiamo una variabile $ts formattando i tag per la query,

$args = array(
		'numberposts' => 3,
		'tag'=> $ts,
		'exclude' => $post->ID,
		'orderby' => 'post_date',
		'order' => 'desc'
		);
$related = get_posts($args);

Creiamo una array per impostare i parametri della query e con la funzione get_posts() i post correlati. In questo esempio i post visualizzati sono 3, ma basta cambiare il valore di numberposts per visualizzare più o meno post correlati.

// Salviamo $post in una variabile temporanea
$post_TEMP = $post;

Verificato che ci siano post correlati, salviamo la variabile $post in una variabile temporanea, in modo da usare le funzioni native di WordPress per visualizzare le informazioni dei post correlati.

  • Articoli correlati

Questo è il codice che stampa a video l’elenco dei post correlati. In questo esempio, visualizziamo solo il titolo dei post correlati, ma basta richiamare le funzioni di WordPress per visualizzare le informazioni dei singoli post (es. the_author()).

// Reset $post
$post = $post_TEMP;
setup_postdata($post);

Infine resettiamo la variabile $post e il gioco è fatto.

Note: Puoi vedere il codice funzionante, alla fine di questo post.

19 Commenti
  • Renato

    Ciao,
    questo articolo mi ha interessato moltissimo, ben realizzato e spiegato, i miei complimenti.
    Ci sono arrivato perchè cercavo qualcosa per una esigenza simile, ma per le categorie.
    Desideravo infatti ottenere un elenco di post correlati ad una categoria, ordinando i post per i loro tag.
    Per esempio:
    Categoria: Musica Classica
    Tags: Beethoven, Mozart, Chopin.
    Creo dei post che parlano di brani musicali con Categoria Musica Classica e li classifico utilizzando i Tags dei musicisti.

    Se un utente desidera visualizzare tutti i post per Musica Classica vorrei offrire un elenco ordinato per Musicista e quindi per post.

    Spero di essere stato chiaro, grazie per l’attenzione.
    Un saluto.
    Renato

  • kilotto

    Renato, per recuperare post correlati per categoria, puoi usare il filtro category nella funzione get_posts().
    Ordinare i post per tag, al momento non è previsto per la funzione get_posts(), ma potresti far singole query per singolo tag.

  • Ian

    un bell’articolo! soprattutto utile.
    ti chiedo solo una cosa, testando il code:

    $tags = array();
    $blacklist = array(‘blacklist’);
    foreach ($posttags as $t) {
    if(!in_array(strtolower($t->name),$blacklist)){
    $tags[] = str_replace(‘ ‘,’-’,$t->name);
    }
    }

    in questo passaggio, sostituendo i tag nell’array:
    array(‘tag1′,’tag2′);
    il comportamento è tutt’altro che buono, esclude articoli con una logica che non riesco a comprendere, ma di certo non esclude gli articoli con i tag segnati nell’array. pensavo dipendesse dal fatto che teneva in memoria questa variabile $blacklist quindi ho provato anche a resettarla ma niente.
    non sono un programmatore di buon profilo, sono più che altro designer ed esperto html/css…il lato dinamico ce l’ho in studio…cmq non sai dirmi se c’è qualche errore che a me sfugge? ciao e grazie
    ed ancora complimenti per questo blog

    Ian

  • kilotto

    @Ian, in che array hai messo i tag?
    hai un sito web di riferimento ?

  • Gestire i post correlati in WordPress | Mr.Webmaster – Blog

    [...] 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 soli un widget per creare questo tipo di [...]

  • Luca

    Ciao, scusa la domanda forse sciocca, ma in quale file va inserito lo script? in single.php?
    Grazie

  • kilotto

    @Luca, si in single.php

  • luca

    Grazie! nel frattempo avevo provato con successo; ottimo consiglio, grazie ancora.

  • luca

    Approfitto ancora della tua gentilezza: ma è normale che però inserito qeusto script mi spariscano nel singolo post i tag del post stesso? forse ho sbagliato il punt odi inserimento…grazie

  • www.webtjax.com » Manage the related posts in WordPress

    [...] you take a look at two interesting posts published on gurucoder.org (related post by category) andkifulab.net (related post by tag) that spiegamo as create yourself a widget to create this type of content on [...]

  • Jhnwcdcr

    Where are you calling from? sxvideo
    Her body is perfect!

  • Qrctlszv

    I’d like , please pornoverdose
    Nice tits on her.

  • Ikzihuqe

    I’m afraid that number’s ex-directory pornoverdose
    lela starr my favorite

  • Mrnubfsn

    I’ve lost my bank card http://community.parents.com/asumouooi/blog/2013/04/04/lolita_kingdom_nude_pics free lolita galleries com Very nice different touch the way the camera lngered on his cock after he’d cum. Man was it looking impressive then! I’m envious!

  • Wtzaufut

    I really like swimming model little young lol how the hell this bitch shirt get back around her waist when she sucking and jerking oh boi dick so he can nut in her cute face.

  • Miguel

    Could you tell me the dialing code for ? pre teen thai lolitas Tess enjoys and loves Sex and she is very good at it too knows how to move her lower half to meet his thrusts and does not make much noise only sounds of enjoyment comes from her mouth as she makes love.Tess is very Beautiful too Beautiful Breasts and Body Tess definitely Loves and enjoys having SEX and Foreplay

  • Johnd405

    You could certainly see your skills within the work you write. The world hopes for more passionate writers like you who arent afraid to say how they believe. Always follow your heart. agfcgdekggee

  • interested body building

    Hi there just wanted to give you a quick heads up and let you know a few of the pictures aren’t loading properly.
    I’m not sure why but I think its a linking issue.

    I’ve tried it in two different browsers and both show the same
    results.

    Review my weblog interested body building

  • bodybuilding weight

    You are so interesting! I don’t suppose I’ve read anything like this before.
    So great to discover somebody with some unique thoughts on this
    subject. Really.. thank you for starting this up.

    This site is one thing that is needed on the internet, someone with a bit of originality!

    Stop by my web blog – bodybuilding weight

Lascia un commento