telemac0

per coloro cui piace presumere

Piegare il WordPress engine ai propri scopi.

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

, , ,

9 thoughts on “Piegare il WordPress engine ai propri scopi.
  • Campo Base Web scrive:

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

  • Telemaco scrive:

    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 :)

  • Campo Base Web scrive:

    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.

  • john doe scrive:

    Segnalibri -> Aggiungi pagina nei segnalibri -> WordPress

    per dire, mi torna giusto utile.
    ciao

  • rthfovxkge scrive:

    Hello! Good Site! Thanks you! bdpcancgnxlg

  • jameswillisisthebest scrive:

    This is my first post
    just saying HI

  • Davide scrive:

    Grazie mille, questo post mi è utilissimo, pagina aggiunta ai segnalibri ;)

  • Online Casino scrive:

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

  • bob scrive:

    xS2hrD hi nice site thanx http://peace.com

Lascia un Commento

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>