Una funzione interessante da poter implementare nel proprio blog è quella di far visualizzare gli ultimi articoli della stessa categoria quando si visualizza un post singolo. È un modo per poter servire meglio il lettore e suggerirgli qualcos’altro a cui può essere interessato relativamente ad uno specifico argomento.
Il codice base da personalizzare è il seguente:
<?php if (is_single()) { ?>
<div class="mio-contenitore">
<h2>Ultimi 5 articoli in <?php the_category(' '); ?> </h2>
<?php
$category = get_the_category();
$cat = $category[0]->cat_ID;
$myposts = get_posts("posts_per_page=5&category=$cat");
?>
<ul>
<?php foreach($myposts as $post) : ?>
<li>
<a href="<?php the_permalink(); ?>" title="Vai all'articolo <?php echo get_the_title(); ?>">
<?php the_title(); ?>
</a>
</li>
<?php endforeach; ?>
</ul>
</div>
<?php } ?>
Questo codice, il cui posto ideale è in cima alla sidebar, viene eseguito solo se ci si trova in un articolo singolo, e non su una pagina statica (<?php if (is_single()) { ?>). Tutto il blocco viene inserito all’interno di un DIV di nome mio-contenitore, che ovviamente va personalizzato con uno stile già pronto. A seguire mostro le possibilità di personalizzazione, che vanno eseguite tutte sulla riga 9 di questo blocco di codice.
Cambiare il numero di post visualizzati
Se si desidera cambiare il numero di post visualizzati, va sostituito il valore 5 della riga 9 (così come anche il titolo della riga 3).
Visualizzare un elenco casuale di post
Se si preferisce visualizzare un elenco di post casuali, basta aggiungere alla fine della riga 9 &orderby_rand, vale a dire:
$myposts = get_posts("posts_per_page=5&category=$cat&orderby_rand");
Escludere dall’elenco il post più recente
Un’utile opzione potrebbe essere quella di escludere dall’elenco il post più recente. Basta aggiungere alla fine della riga 9 l’argomento &offset=1, che appunto sposta l’elenco di un post. Ecco la riga:
$myposts = get_posts("posts_per_page=5&category=$cat&offset=1");
Escludere dall’elenco il post che si sta visualizzando
Ma molto più utile, credo, sia escludere proprio il post che si sta visualizzando in questo momento. È sufficiente aggiungere l’opzione &exclude=$post->ID:
$myposts = get_posts("posts_per_page=5&category=$cat&exclude=$post->ID");
proprio ciò che stavo cercando, ma vorrei capire dove va inserito esattemente questo codice.
Ad esempio nel template single.php oppure nella barra laterale, come facevo col mio precedente tema. È un piccolo loop aggiuntivo.
Ciao, innanzitutto grazie mille per la segnalazione.
Se invece io dovessi inserirlo in una pagina statica, per avere gli ultimi tot post di una data categoria, quali valori dovrei modificare? Se ad esempio mi interessasse mostrate la categoria “Attualità”, cosa dovrei cambiare in questo codice?
Grazie
Ti creerai un template apposito che puoi chiamare Attualità e puoi usare come ossatura questo
Grazie mille, ma credo di essermi espresso male io :)
Non intendo creare una pagina statica col suddetto contenuto, ma applicare in una pagina statica già esistente un comando in php che mi mostri un elenco di news di quella categoria. Immagino che per farlo basti modificare questa parte
<?php $categories = get_the_category(); $cat = $category[0]->cat_ID; $myposts = get_posts("numberposts=5&category=$cat");con l’ID della categoria che intendo mostrare, vorrei solo sapere quale valore dovrei modificare (non vorrei fare danni), spero di essermi spiegato :)
grazie ancora
Non puoi assegnare alle pagine statiche né categorie né tag: l’ho anche scritto nell’articolo. Quindi se vuoi visualizzare dei post da una determinata categoria in una pagina statica, devi usare il codice che ti ho postato stamattina. Per pagina statica si intende nel gergo di WordPress una pagina come http://example.com/about.
Se invece intendevi dire un post singolo, cioè una pagina come questa che stai leggendo, allora puoi usare il codice che ho pubblicato nel post, modificando solo una piccola cosa:
$category = get_the_category(); // preleva l'insieme delle categorie del post attuale. $cat = $category[0]->cat_ID; // preleva l'ID della prima categoria $myposts = get_posts("posts_per_page=5&category=$cat"); // preleva i primi 5 post in quella categoriaSe ti è chiaro cosa fanno esattamente queste righe, ti sarà facile adattarlo alle tue esigenze.
Se vorrai escludere il post che stai visualizzando, dovrai modificare l’ultima riga con quanto ho scritto nell’ultimo paragrafo dell’articolo.
Ciao!
P.S. Nel post ho corretto una svista su variabile: c’era $categories al posto di $category.