Creare un loop di post con WordPress


In questo tutorial per WordPress andrai a vedere e comprendere i concetti di base del cosidetto loop e le funzioni fondamentali di WordPress per creare una serie di post nella propria pagina.

Loop in inglese significa anello e identifica qualcosa che si ripete compiendo una certa azione un determinato numero di volte, questo è l’anima di un qualsiasi template di WordPress, serve per richiamare una serie di post e mostrarli in una pagina web che sia essa l’index.php o qualsiasi altra.

In realtà il loop è un concetto molto più ampio nel campo della programmazione e si può creare con diversi linguaggi non solo con PHP come nel caso di WordPress, ma l’utilizzo che ne viene fatto su WP è strettamente legato al fatto di richiamare articoli dal database in cui vengono salvati.

La struttura di un loop

Qui di seguito la struttura portante di un loop, per iniziare puoi copiare queste istruzioni per esempio nel file index.php dell tuo tema WordPress.

<?php if ( have_posts( ) )  : while ( have_posts() ) : the_post(); ?>
 
// Contenuto del loop 
 
<?php endwhile; else: ?>
 
// Qui puoi inserire un messaggio nel caso manchi il post.
 
<?php endif; ?>
 
// Fine del loop

il codice PHP scritto sopra si può tradurre in questa maniera: Se esistono dei post salvati all’interno del database allora prendi questi post e mostrali, per decidere il numero di volte che questo loop deve ripetersi puoi scegliere il numero di post da mostrare nel pannello Impostazioni>lettura e impostare un numero per esempio su FMD sono 10 post; Questo vuol dire che, il loop, una volta giunto al suo termine ripeterà la stessa azione specificata al suo interno per 10 volte, se nel tuo blog avrai 8 post pubblicati ne verranno mostrati solo 8 ma se ne avrai 12 il loop ne mostrerà comunque 10 a meno che tu non voglia cambiare il valore dal pannello Impostazioni>Lettura come fatto prima.

Ora il loop è impostato ma se proverai a caricare la tua pagina web non troverai nessun post, questo perchè ora dobbiamo riempire il contenuto del loop con le funzioni di WordPress che intendiamo usare.

Facciamo l’esempio di voler mostrare per ogni articolo:

Le funzioni sopra sono parte integrante di WordPress e sono quelle che da inserire all’interno del loop, quindi:

<?php if ( have_posts( ) )  : while ( have_posts() ) : the_post(); ?>
 
// Richiamo il titolo del post all'interno del tag h1 
e per collegralo con un link all'articolo completo uso 
la funzione the_permalink(); nell'attriburo href del tag html a
<h1><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h1> 
 
 
// Richiamo un estratto del contenuto testuale del post 
<div>
<p><?php the_excerpt(); ?></p>
 
<?php the_post_thumbnail('thumbnail'); ?>
</div>
 
// Richiamo un estratto del contenuto testuale del post
<span>Articolo scritto da <?php the_author('') ?></span>
 
 
 
<?php endwhile; else: ?>
 
<p>Nessun post presente nel Database o che soddisfi la tua richiesta.</p>
 
<?php endif; ?>

Ora rimane da controllare una ultima cosa, ovvero se il tuo tema ha abilitata la possibilittà di scegliere una immagine di anteprima da richiamare per ogni articolo, per controllare prova ad andare nella pagina Articoli > Aggiungi nuovo e controllare che in basso a destra ci sia il pannello immagine in evidenza, nel caso sia presente vuol dire che il tuo tema supporta questo tipo di caratteristica e quindi ti basterà inserire, cliccando su imposta immagine in evidenza, la tua immagina che verrà richiamata tramite la funzione inserita nel loop the_post_thumbnail('thumbnail');

Nel caso invece questo pannello non sia presente devi attivarlo aprendo o creando il file function.php nella cartella principale del tuo tema WordPress e inserire questa istruzione

...
add_theme_support( 'post-thumbnails' );
...

Dopo aver salvato questo file deve comparire il menu mostrato sopra permettendoti di inserire l’immagine di anteprima per post.

Ora il loop è concluso e funzionante e i tuoi post saranno mostrati nella pagina in cui hai inserito il loop, come ultima cosa rimane modificarne l’aspetto utilizzando i CSS.

Info sull' autore:
Nato a Bologna, mi occupo della realizzazione grafica e dello sviluppo front-end di siti web e sono il fondatore di questo blog. Se vuoi segnalare qualche problema o hai qualche richiesta particolare invia una mail tramite il modulo contatti.
Leggi gli altri articoli di

8 Risposte per Creare un loop di post con WordPress

  1. Federica 19 novembre 2011 at 04:30 | Permalink | Reply

    Ciao Francesco,

    avrei bisogno di creare la stessa situazione ma, invece di essere post, devono essere estratti di pagine statiche di wordpress…

    Quindi una pagina statica che al suo interno richiama i riassunti di altre pagine statiche!!!

    E’ possibile?

    Grazie per il tuo aiuto ;)

    • Francesco 19 novembre 2011 at 11:45 | Permalink | Reply

      Ciao Federica,

      Prova ad inserire al posto del loop questo tipo di loop sotto che utilizza la funzione query_post

       
      <?php 
      query_posts(array('showposts' => , 'post_parent' => , 'post_type' => 'page'));
       
      while (have_posts()) { the_post();
          /* Aggiungi qui quello che preferisci venga visualizzato per ogni pagina cone the_content(); etc...*/
      }
       
      wp_reset_query();  // Resetta la richiesta iniziale
      ?>
      • federica 19 novembre 2011 at 15:33 | Permalink | Reply

        Ciao Francesco,

        grazie per l’aiuto ;)

        Ho provato ma, mi viene restituito un errore:
        Parse error: syntax error, unexpected ‘,’ in /wp-content/themes/catalyst/lib/functions/catalyst-hook-boxes.php(69) : eval()’d code on line 2

        • Francesco 22 novembre 2011 at 17:49 | Permalink | Reply

          Federica scusa per l’errore, prova a copiare e incollare questo nuovo codice nella pagina dove vuoi che compaia il loop di pagine, vedrai che funzionerà:

          <?php
           
          query_posts( 'post_type=page' ); 
           
           
          while ( have_posts() ) : the_post();
           
               the_title(); 
               the_content(); 
           
          endwhile; 
           
           
          wp_reset_query();
           
          ?>
  2. Stefano 15 aprile 2012 at 16:23 | Permalink | Reply

    Ciao Francesco,
    complimenti per il post. Vorrei chiederti un consiglio a riguardo? Il loop che tu descrivi può essere utilizzato per mostrare gli ultimi post all’interno di una home page statica?
    Mi spiego meglio, sto cercando di creare un home page con del contenuto scritto da me + una sezione con un’anteprima degli ultimi 5 post scritti. Una volta creata l’home page ed assegnato un template classico (ad es riprendendo quello di page.php) posso all’interno della pagina utilizzare il tuo codice per visualizzare l’anteprima dei post?

    Inoltre non avendo immagini in veidenza nei post ma avendo immagini all’interno delgi articoli cosa posso utilizzare per far visualizzare quelle mmagini? (immagino che the_post_thumbnail non funzioni)

    • Francesco 16 aprile 2012 at 16:52 | Permalink | Reply

      Ciao Stefano si certo l’importante è che tu inserisca il loop anche nella pagina statica

  3. Giuseppe 10 maggio 2012 at 23:51 | Permalink | Reply

    Ciao Stefano,
    volevo chiederti un aiutino… non so pero se è questa la discussione più appropiata,
    dovrei inserire nei post un link come dire…. dinamico.
    che si completa con il titolo del post, esempio:

    Post titolo:ricetta italiana

    link: http://www.esempio.com/esempio.php/ricettaitaliana

    dovrei usare la variabile del titolo ma come?
    Grazie in anticipo.
    Buonaserata

    • Francesco 11 maggio 2012 at 10:54 | Permalink | Reply

      Devi andare nel pannello admin della tua installaziondi di WordPress, cliccare su Impostazioni>Permalink e poi selezionare la voce su nome articolo, oppure struttura personalizzata e poi utilizzi i parametri preimpostati da wordpress per fare in modo che compaia il link come più preferisci.

Lascia un commento

Trackbacks