Visualizzare gli ultimi articoli della stessa categoria

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.

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");

Autore: Aldo Latino

Aldo Latino usa con entusiasmo Linux nella distribuzione Ubuntu, è un appassionato di WordPress e si diletta a fare il blogger. Ha anche una lista dei desideri. Per altre informazioni visita la sua .

8 pensieri riguardo “Visualizzare gli ultimi articoli della stessa categoria”

    1. Ad esempio nel template single.php oppure nella barra laterale, come facevo col mio precedente tema. È un piccolo loop aggiuntivo.

  1. 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

    1. Ti creerai un template apposito che puoi chiamare Attualità e puoi usare come ossatura questo

      <?php
      /**
       * Template Name: Attualità
       */
      
      get_header();
      
      $args = array (
         'category_name' => 'Attualità',
         'posts_per_page' => 1, // controlli quanti post per pagina visualizzare
         'paged' => $paged // serve a fornire il numero di pagina alla query
      );
      
      query_posts( $args );
      
      if ( have_posts() ) :
         while ( have_posts() ) :
            the_post(); ?>
            // inserisci qui tutto l'occorrente come ad esempio:
            <h2><?php the_title(); ?></h2>
      <?php
         endwhile;
         next_posts_link();
      endif;
      
      get_sidebar();
      get_footer();
      ?>
  2. 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

    1. 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 categoria

      Se 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.

      1. Ciao ma se non hai altri post da visualizzare della stessa categoria come puoi far visualizzare un messaggio che dice che non ci sono altri post? Grazie

        1. Ciao Andrea,
          ti basta aggiungere un controllo sulla variabile $myposts. Se è popolata, eseguirà del codice; altrimenti visualizzerà il messaggio.

          Il controllo lo devi inserire prima del foreach della riga 10: in questo modo se è vero che $myposts è popolata, eseguirà il foreach, altrimenti mostrerà un altro HTML.

          Se hai bisogno di aiuto sul codice, chiedi pure.

I commenti sono chiusi