In un post precedente annotavo qualche considerazione sull’utilizzo di WordPress non come blog-engine, scopo per cui è stato creato, ma per applicazioni più complesse, come la gestione di un piccolo portale informativo. La home di un newsmagazine non è strutturata con il criterio dei blog-engine (l’ultimo articolo inserito è il primo visualizzato), ma, di solito, consente con un sistema di pesi di stabilire quali saranno le notizie in Home, e a quale livello di importanza ci finiranno.
In questo post provo a sintetizzare gli spunti operativi e di codice che servono per passare alle personalizzazioni ipotizzate.
HomePage
Come già riportato nel post precedente, per modificare la struttura della homepage di un sito basato su WordPress è necessario intervenire su TheLoop, la funzione che cicla tra i post inseriti e visualizza i più recenti. Immaginiamo di impaginare la nostra Home con una notizia di Primopiano, tre notizie di SecondoLivello, cinque articoli di cui visualizzeremo SoloTitolo. Creaimo allora tre categorie dal pannello admin di Wordpress, chiamiamole con i nomi appena ipotizzati, e appuntiamoci l’ID di queste categorie. Nell’esempio che descrivo assegnerò a queste tre categorie rispettivamente l’ID 11, 12 e 13.
A questo punto bisogna intervenire sul codice del file index.php presente sul nostro template. Per prima cosa, bisognerà rimuovere tutto il codice che va da:
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
fino a:
<?php endwhile; else: ?> <p><?php _e('Sorry, no posts matched your criteria.'); ?></p> <?php endif; ?>
Per sostituirlo con:
<?php $posts = get_posts( "category=C&numberposts=N" ); ?> <?php if( $posts ) : ?> <?php foreach( $posts as $post ) : setup_postdata( $post ); ?> <h2><a href="<?php the_permalink() ?>" title="PermaLink to <?php the_title(); ?>"><?php the_title(); ?></a></h2> <?php the_content("Leggi tutto... '" . the_title('', '', false) . "'"); ?> <?php endforeach; ?> <?php endif; ?>
Dove con C indicheremo il numero della categoria, e con N il numero di post che vogliamo visualizzare per quella categoria.
Nel nostro esempio, dovremo inserire 3 volte questo codice, assegnando i valori 11, 1 - 12, 3 - 13, 5 a C e N, per rispettare i requisiti esposti nell’enunciazione dell’esempio. Nell’ultimo caso, elimineremo la riga <?php the_content("Leggi tutto... '" . the_title('', '', false) . "'"); ?> facendo visualizzare così solo i 5 titoli degli articoli pescati.
Impaginate e Stylesheet-ate a piacere, ed avrete la vostra Home personalizzata.
Sezioni
Wordpress consente, in maniera nativa, di gestire un’impaginazione diversa per ogni categoria presente. Immaginiamo di avere sul nostro portale una categoria chiamata “Pictures” in cui postiamo le nostre foto, e che questa categoria abbia ID=30. Il link generato in automatico da WordPress sarà del tipo nomesito/cartellablog/?cat=30.
Passare il parametro cat, fa fare al WordPress Engine un percorso del genere:
- andrà a vedere se esiste un file nel template chiamato category-30.php
- se non esiste, cercherà il file category.php
- se non esiste, caricherà index.php
Questa funzionalità consente di personalizzare il template per ogni categoria. Ad esempio, possiamo creare una testata tematica per la categoria Pictures e chiamare il file header-30.php; creiamo un category-30.php copincollando e rinominando il category.php standard e modifichiamo le prime righe del file, sostituendo:
<?php get_header(); ?>
con:
<?php include(TEMPLATEPATH . '/header-30.php') ; ?>
Questo discorso si può estendere con lo stesso criterio a sidebar e footer.
Ogni volta che si accederà a nomesito/cartellablog/?cat=30, WordPress visualizzerà il tutto prendendo il codice da category-30.php, in automatico, senza bisogno di altri interventi.
Utilizzi possibili
L’interesse per una manipolazione avanzata del Wordpress engine era nato per un lavoro di pubblicazione di una testata giornalistica online, lavoro che in realtà ha richiesto modifiche più profonde, sviluppate con lo stesso criterio (le pagine di visualizzazione dell’articolo singolo richiamano i 5 articoli più recenti presenti in quella determinata categoria, il sistema di banner è gestito con il sistema di gestione dei post nativo di WordPress, eccetera).
Il codice appena postato permette però di creare funzioni utili per qualsiasi tipo di blog. Ad esempio, è semplice creare una sorta di widget che visualizzi i titoli dei 5 post “migliori” (a proprio parere, naturalmente) nella propria sidebar. Si crea una categoria (”mybest“) e si annota l’ID (ipotizziamo che sia il 35).
A quel punto, si edita la sidebar, inserendo il codice:
<?php $posts = get_posts( "category=35&numberposts=5" ); ?> <?php if( $posts ) : ?> <?php foreach( $posts as $post ) : setup_postdata( $post ); ?> <h2><a href="<?php the_permalink() ?>" title="PermaLink to <?php the_title(); ?>"><?php the_title(); ?></a></h2> <?php endforeach; ?> <?php endif; ?>
lo si impagina a dovere tramite CSS, e il gioco è fatto.
Ancora, è possibile impostare una categoria nel proprio blog i cui post non vengano visualizzati in home page. Pensiamo ad un blogger che scrive sia di tematiche tecniche o comunque correlate al proprio lavoro, che di avvenimenti econsiderazioni private. Se ha intenzione di utilizzare il blog come una sorta di curriculum vitae, avrà bisogno di far sì che alcuni post non siano in home. Basta creare una categoria Private, escluderla dal loop in home page (ad esempio, non assegnando ai post in essa contenuti l’ulteriore categoria Public, utilizzata per ciclare i post che andranno in home page) e creare un RSS Feed distinto per questa Eccetera.
Spero di essere stato sufficientemente dettagliato. La fonte di ispirazione iniziale è stato sicuramente http://max.limpag.com, che ancora ringrazio. Buon lavoro a chiunque si cimenterà.
1 Luglio 2007 alle 10:28 am
La prima cosa che mi vien di dire è sul titolo del post .. che mi stimola a essere pignolo.
La prospettiva di usare un “motore software” per scopi più creativi della .. pura soddisfazione di sentirlo rombare sotto il nostro sedere di viaggiatori virtuali (la pratica d’uso più comune .. in definitiva, no?) .. m’interessa proprio.
Prima di cimentarmi .. però .. ho bisogno di definire “gli scopi”.
Gli scopi nel mio caso sarebbero “di gruppo” .. sarebbero cioè quelli che vorrei contribuire a formulare .. traducendo in pratica un’idea di “Campo Base Web” .. fin qui solo malamente abbozzata con un accrocchio di cose mal presentate e interconnesse .. pubblicate con Blogger, PBwiki, Google Documents e qualche gadget.
Il primo passo verso la meta definita dal titolo del post .. se voglio permettermi di farlo .. ha quindi bisogno di un’indicazione introduttiva .. del tipo “per utenti duri di comprendonio” .. cioè “for dummies” .. sul tema “Usare il wordpress engine per definire i propri scopi”
Qualcuno può darmi delle dritte .. che siano anche facili da far capire a chi capisce meno di me ?
Perché è questo il problema .. non posso mettermi a sudare per capire come “piegare il wordpress engine ai propri scopi” se .. per definire i miei scopi .. ho bisogno di coinvolgere chi non è motivato a capire come funziona un “motore software”.
1 Luglio 2007 alle 12:18 pm
Dando per scontato che i “propri scopi” fossero ben chiari a chi si imbatteva nell’articolo, il post voleva essere un aiuto tecnico per chi è capace di installare Wordpress su uno spazio web (operazione, peraltro, molto molto semplice), ma che non riteneva soddisfacenti le “impostazioni base” dello stesso, e non avesse voglia di finire su codex.wordpress.org per studiarsi i TemplateTag.
Prima di risponderti ho fatto un giro sul tuo blog. Sintetizzando (e semplificando, perdonami), quello che intendi fare e’ un network di produttori di contenuti localizzati in un posto ben preciso. Per fare questo, il post in se’ non ti e’ troppo d’aiuto: potresti aprire un normale Wordpress permettendo l’accesso in scrittura a chi e’ nel network; oppure utilizzare una piattaforma come WordPress MU, di cui si parla sul blog di Sw4n proprio in questi giorni.
Questo post ti potrà essere d’aiuto nel caso tu voglia impostare diversamente la home page (visualizzando per primi alcuni articoli, e non semplicemente gli ultimi postati); o se vorrai creare dei “canali” nel blog, gestiti come categorie; o, ancora, se vorrai cimentarti nella creazione (esemplifico) di un box laterale del tipo “Articoli correlati”.
Come gia’ scritto, lo studio di Wordpress che ha poi portato alla pubblicazione di questo articolo, nasce dalla richiesta di un committente riguardo la pubblicazione di un “giornale online”, impaginato come tale; non da altro. Nel caso tu voglia qualche dritta, sentiti libero di chiedere
1 Luglio 2007 alle 12:48 pm
Credo che tu mi abbia già dato di che tenermi occupato per un bel po’ di tempo .. Grazie
Il che spero giustifichi la mia scelta di commentare un post che offre un aiuto tecnico .. come hai potuto vedere ho un gran bisogno di semplificare .. Spero di riuscirci e di rifarmi vivo al momento opportuno.
11 Luglio 2007 alle 11:50 am
Segnalibri -> Aggiungi pagina nei segnalibri -> Wordpress
per dire, mi torna giusto utile.
ciao
30 Agosto 2007 alle 8:11 am
Hello! Good Site! Thanks you! bdpcancgnxlg
9 Settembre 2007 alle 12:42 am
This is my first post
just saying HI
20 Ottobre 2007 alle 5:33 pm
Grazie mille, questo post mi è utilissimo, pagina aggiunta ai segnalibri
14 Aprile 2008 alle 9:55 pm
I would like to thank you for the great article. It is good to read such interesting article, thanks for sharing it.
Have a nice day and continue working in the same way!