Personalizzare i Permalink di WordPress

Nota: Questo articolo è la traduzione in italiano di Advanced Customization of WordPress Permalink Structure il quinto di una serie di post pubblicati su blogHelper che spiega come trasformare WordPress in un sistema di gestione di contenuti. La traduzione viene pubblicata qui con il permesso dell’autore: Ang Zhuu Ming.

* * *

Se hai seguito l’articolo precedente della serie “Usare WordPress come un CMS“, dovresti già essere in grado di impostare questa struttura di Permalink:

  • Home Personalizzata: http://tuosito.com/
  • Home Page del Blog: http://tuosito.com/blog/
  • Articoli del Blog: http://tuosito.com/blog/titolo-post/
  • Categorie del Blog: http://tuosito.com/blog/categoria/nome-categoria/
  • Archivio Mensile del Blog: http://tuosito.com/blog/2006/08/

Queste impostazioni però possono essere migliorate. Ad esempio, vogliamo creare – usando le Pagine – una sezione Articoli indipendente dal normale ordine cronologico inverso del Blog e con una sua struttura di Permalink.
Andiamo in Amministrazione > Gestione > Pagine. Questa è la struttura che ci interessa:

WordPress Manage Pages

I Permalink di questa struttura dovrebbero essere questi:

  • Indice Articoli: http://tuosito.com/articoli/
  • Le Categorie: http://tuosito.com/articoli/introduzione/
  • Gli Articoli nelle Categorie: http://tuosito.com/articoli/introduzione/economia/

Ora abbiamo una Home Page Personalizzata, un Blog con il suo ordine cronologico inverso ed una sezione Articoli strutturata in maniera gerarchica. Volendo, possiamo anche aggiungere altre sezioni, per esempio delle FAQ seguendo l’esempio sopra riportato.

Ma se volessimo aggiungere al nostro Blog un’altra sezione per le Notizie che segua un ordine cronologico? Per fare questo possiamo usare il sistema degli Articoli e possiamo fare in modo di avere una struttura di Permalink simile a quella usata per le pagine:

  • Indice Notizie: http://tuosito.com/notizie/
  • Categorie Notizie: http://tuosito.com/notizie/categoria/titolo-categoria/
  • Singole Notizie: http://tuosito.com/notizie/titolo-notizia/

Un sistema semplice per ottenere una cosa del genere è cambiare la struttura dei Permalink sfruttando il tag /%category%/ in questo modo:

/%category%/%postname%/

Poi creiamo due nuove Categorie: Blog e Notizie (se ci servono altre sezioni ordinate cronologicamente, possiamo creare altre Categorie). Una volta create le Categorie, ci assicuriamo che abbiano un ID basso perché, nel caso di Articoli assegnati a più categorie, il tag /%category%/ usato nei Permalink degli Articoli seleziona sempre la Categoria con l’ID più basso.
Ora, tutto quello che dobbiamo fare è scegliere una di queste categorie (Blog o Notizie) quando scriviamo un articolo, e il permalink del nuovo articolo visualizzerà automaticamente /blog/ o /notizie/ prima del permalink del titolo.

Attenzione: se vogliamo rimuovere le due voci Blog e Notizie dal menu delle Categorie, possiamo usare il parametro di esclusione del marcatore wp_list_cats() (o il suo equivalente nella funzione list_cats()).

Questo è tutto. Lo svantaggio principale di questa soluzione è che i permalink degli archivi delle categorie e dei mesi non funzionano né in /blog/, né in /notizie/ a meno che non vengano modificate le regole di riscrittura.
Puoi scegliere una sola directory, corrispondente a quella che hai impostato per la pagina principale del blog nelle Opzioni del plugin Filosofo Home Page Control (se n’è parlato nall’articolo precedente).
E anche se vai a modificare le regole di riscrittura, WP non è programmato per visualizzare strutture di archivio diverse. Perciò non è proprio possibile avere due archivi distinti, uno per le Notizie e un altro per il Blog, anche se potresti simulare delle categorie multiple usando le sotto-categorie e le regole di riscrittura.

Gli altri articoli della serie

  1. Usare WordPress come un CMS
  2. 5 ragioni per usare WordPress come un CMS
  3. 5 ragioni per non usare WordPress come un CMS
  4. Creare una Home Page personalizzata in WordPress

  • Pingback: WordPress Italy » Blog Archive » Personalizzare i Permalink di WordPress

  • http://www.norisberghen.it/ Carlo Filippo Follis

    Ciao a Tutti!

    Questo articolo come il precedente è interessantissimo, oggi sciverò un loro richiamo sul mio sito.

    Veniamo alla domanda: Io ho cercato di impostare più volte la condizione “/%year%/%monthnum%/%day%/%postname%/” che è poi quella preimpostata da WP, ma non sono mai riuscito ad ottenerne il funziomnamento sperimentato in LocalHost.
    I Permalink vanno per caso impostati a DB “vuoto”, quindi in assenza di Post già inseriti?
    Se sì, è possibile impostare, o meglio reimpostare, i paths nella tabella apposita del DB?
    Se sì, quale?

    Grazie per ogni vostra attenzione!

  • http://www.studio404.it Claudio Simeone

    Ciao Carlo,
    intanto grazie per il post nel tuo blog.
    Per far funzionare i Permalink anche in locale, bisogna avere prima di tutto installato Apache con il modulo rewrite attivato.
    Poi bisogna creare un file .htaccess vuoto nella directory principale del blog (puoi creare anche un file di testo vuoto e lo rinomini .htaccess) e poi attivare i Permalink dal pannello di amministrazione del tuo blog scegliendo la struttura che più ti soddisfa.
    In ogni caso, per ulteriori approfondimenti, ti rimando qui:
    http://www.wordpress-it.it/wiki/Main/UsingPermalink

  • http://www.norisberghen.it/ Carlo Filippo Follis

    Ciao Claudio!

    Farò presto tesoro delle tue indicazioni.

    Un saluto, ciao!

  • Pingback: 10 ottimi plugin per Wordpress « GiardinodelleIdee

  • Silvia Prosperi

    purtroppo anche io ho seri problemi a far funzionare il tutto. Cosa vuol dire “creare un file .htaccess vuoto nella directory principale del blog”?
    sto cercando di distinguere l’homepage dal blog e dunque posizionare il blog in /nome_sito/blog ma non capisco se il file .htaccess deve essere inserito all’interno della directory dedicata al template in uso (/srv/www/htdocs/wordpress/wp-content/themes/default) o in quale altro livello del path. Grazie,

    Silvia

  • http://www.studio404.it Claudio Simeone

    i file .htaccess vanno messi sempre nella directory principale del blog.

    Comunque, le ultime versioni di WordPress, a partire dalla 2.1 permettono di impostare una qualsiasi pagina creata nel pannello di amministrazione, come Home Page.

  • Silvia Prosperi

    grazie per la risposta. Sono diversi giorni che cerco di seguire il tutorial per dirottare su una pagina diversa dall’homepage il blog e avere invece come homepage una pagina “statica”o comunque non cronologica.
    Ho inserito e reso writeble il file .htaccess nella directory principale del sito e abilitato la modalità rewrite di apace. Tuttavia ancora ho problemi. In particolare, avendo apache 2, non ho nel file httpd.conf la stringa “AddModule mod_rewrite.c”, ma soltanto
    “LoadModule rewrite_module lodules/mod_rewrite.so”.
    Il problema sta nel fatto che ad esempio nel file .htaccess leggo il seguente codice:

    RewriteEngine On
    RewriteBase /wordpress/
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /wordpress/index.php [L]

    Credo sia questo il motivo per cui i permalink non funzionano come dovrebbero e quando vado a cercare la pagina http://localhost/wordpress/blog mi
    dà errore di pagina non trovata.
    Come posso risolvere il problema?

    Silvia

  • Silvia Prosperi

    Ho riportato scorrettamente, questo il codice .htaccess

    # BEGIN WordPress

    RewriteEngine On
    RewriteBase /wordpress/
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /wordpress/index.php [L]

    # END WordPress

  • Silvia Prosperi

    vedo che salta l’ if del
    IfModule mod_rewrite.c come premessa di tutto

  • http://www.studio404.it Claudio Simeone

    No, ma dovrebbe andare. Il fatto di non avere la riga
    AddModule mod_rewrite.c
    non è importante.

    Prova a cancellare il contenuto del file .htaccess e ad aggiornare i permalink nelle Opzioni del Blog.
    Il file .htaccess dovrebbe essere riscritto automaticamente in maniera corretta.

    Oppure, segui passo passo le indicazioni che ho scritto qui:
    http://www.studio404.it/blog/2006/wordpress-home-page-personalizzata.html

    Altrimenti, se continua a non andare, prova ad installare la versione 2.1 di WP.

  • http://www.randomthought.altervista.org/ simo

    ciao, come fai a togliere dal permalink gli articoli (il, lo, la ecc?

    grazie
    Simo

  • http://www.studio404.it Claudio Simeone

    basta modificare manualmente il campo ‘Abbreviazione articolo’