Wordpress, loop multipli per una home page. Esempi di codice

Questa è la struttura generale della nuova versione di questo sito web, online dal primo gennaio.
Usando come base un’installazione standard di Wordpress, ho cercato di creare una struttura che andasse al di fuori dello “schema blog”.

Suzupearl.com - v3

I punti fondamentali per la struttura del sito erano mantenere in un unico CMS un portfolio grafico, un archivio di articoli suddivisi per temi/testate, uno spazio per appunti di vario genere e alcune pagine statiche.

Per sintetizzare le varie aree nella home page, ho utilizzato quattro loop.
Il primo loop doveva richiamare l’ultimo post dalla Categoria “Appunti”: inizialmente ne avevo scritto uno basato sull’esclusione delle categorie che non mi interessava far passare in primo piano.
Poi ho deciso di cambiarlo con un loop che richiamasse esclusivamente uno Sticky post, perché potrebbe essere più utile mantenere in home page un post rilevante piuttosto che il più recente. L’esempio di codice è questo:

<?php
array(’post__in’=>get_option(’sticky_posts’));
$sticky=get_option(’sticky_posts’);
query_posts(’p=’ . $sticky[0]);
?>

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<?php the_content(); ?>

<?php endwhile; ?>
<?php endif; ?>

Il secondo loop è dedicato al Portfolio, richiama gli ultimi due post della Categoria “Portfolio” e utilizza un campo personalizzato per visualizzare una miniatura. Segue l’esempio, nel quale si sostituisce xxxxx con l’ID della Categoria e si determina il numero di post da visualizzare (numberpost=numerochevuoi). Sostituire “personalizzato” con il nome assegnato al Custom Field.

<?php query_posts('cat=9&showposts=2'); ?>
<?php $posts = get_posts(’category=xxxxx&numberposts=2&offset=0′);
foreach ($posts as $post) : start_wp(); ?>

<a href="<?php the_permalink() ?>" title="Dettagli"><img src="<?php $key="personalizzato"; echo get_post_meta($post->ID, $key, true); ?>"/></a>
qui inserisci il resto…
<?php endforeach; ?>

Gli altri due loop sono uguali come struttura, cambia solo l’ID della Categoria. Mi sono stati utili per listare una serie di articoli, e in futuro potrei decidere di aggiungere altri box per altri filoni/progetti/testate. Si differenziano dal loop precedente solo per mancanza di un campo personalizzato. L’esempio:

<?php query_posts('cat=xxxxx&showposts=3'); ?>
<?php $posts = get_posts(’category= xxxxx&numberposts=3&offset=0′);
foreach ($posts as $post) : start_wp(); ?>
<a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a>
<?php the_excerpt(); ?>
<?php endforeach; ?>

Questi ultimi due esempi possono essere utilizzati in generale per creare un loop basato su una singola categoria. Potrebbe essere utile ad esempio per creare una pagina di riepilogo basata su colonne o blocchi di tematiche specifiche.

Se si volesse filtrare per tag invece che per Categoria, si può seguire questo esempio sostituendo a xxxxx il nome del tag:

<?php query_posts('tag=xxxxx&showposts=3'); ?>
<?php $posts = get_posts(’tag=xxxxx&numberposts=3&offset=0′);
foreach ($posts as $post) : start_wp(); ?>
<a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent
Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a>
<?php the_excerpt(); ?>
<?php endforeach; ?>

Per realizzare questa index.php, mi sono stati utili i riferimenti ufficiali del Codex di Wordpress.org e alcuni articoli di Nathan Rice, Ruhani Rabin e Jeff Starr (thanks!).


Data: martedì 6 gennaio 2009 alle 15:43
Tag: , , , , ,
Categorie: Appunti, Wordpress
Segui la discussione di questo post via RSS.
Puoi lasciare un commento | trackback

10 commenti to “Wordpress, loop multipli per una home page. Esempi di codice”

  1. kOoLiNuS scrive:

    che dire se non “complimenti” ?

  2. Ho capito pochissimo, tuttavia… figo!

  3. BECA scrive:

    Anche io ho utilizzato dei loop simili nella home del mio blog (arrivandoci dopo 1000 tentativi e letture di svariate letture di topic in vari forum - specialmente quello di wordpress-it.it), andando a visualizzare solo quelli di una certa categoria.

  4. Suzupearl scrive:

    secondo me è una buona possibilità per dare rilevanza a certi contenuti gestendo un sito tutto sommato semplice. per cose più complicate cambierei invece il cms

  5. Davide scrive:

    Cavolo! molto bello il lavoro che hai fatto!

  6. Davide scrive:

    Bel lavoro! Complimenti!
    E’ possibile filtrare secondo voi i post che hanno nel contenuto almeno 1 immagine?

  7. Suzupearl scrive:

    Lo puoi fare solo assegnando ai post che contengono l’immagine uno specifico tag o categoria, oppure affidandoti ai campi personalizzati. Ma in tutti i casi devi fare un lavoro a priori, non si può filtrare contenuti in base a quel che inserisci nel post.

  8. jgor scrive:

    E’ possibili organizzare i post per data tramite loop?
    io ho un blog giornaliero e vorrei visualizzarlo come un calendario.

  9. iasti scrive:

    forse arrivo tardino, ma avrei una domanda da fare.

    Per creare un loop che visualizza solo un articolo per categorie in homepage come posso fare?

Lascia un commento