Un permalink è il link che viene utilizzato per accedere a uno specifico contenuto del vostro sito.

Per esempio, la homepage di Kinsta si trova all’indirizzo https://kinsta.com/, il nostro blog all’indirizzo https://kinsta.com/blog/ e un singolo post usa un link come https://kinsta.com/blog/wordpress-widgets/.

I permalink sono usati anche per le pagine di archivio, le pagine statiche e qualsiasi contenuto del vostro sito che necessiti di un proprio URL.

In questo articolo vi mostreremo come funzionano i permalink, come ottimizzarli per il vostro sito e come configurarli attraverso la schermata delle impostazioni e scrivendo del codice.

I permalink di WordPress sono definiti nel codice ufficiale di WordPress come:

“Gli URL permanenti dei singoli articoli del vostro sito o blog, così come le categorie e gli altri elenchi di articoli del sito o del blog.”

Ogni pagina del vostro sito (compresi gli articoli, le pagine, le pagine di archivio e altre pagine come la 404) avrà il suo permalink.

Così, per esempio, la vostra homepage si troverà su sito.com, mentre il vostro blog sarà su sito.com/blog.

Se avete una categoria “in primo piano” nel vostro blog, potrebbe essere raggiungibile in una delle numerose URL:

  • yoursite.com/category/featured
  • yoursite.com/blog/featured oppure solo
  • yoursite.com/featured.

Anche i singoli articoli hanno il loro permalink. Nei file del template del tema, il tag del template the_permalink() verrà utilizzato per recuperare l’URL di un articolo e creare un link cliccabile da esso.

WordPress lo usa per ottenere il permalink unico per il singolo articolo e inserirlo all’interno di un elemento <a> in modo che possa essere usato come link nei vostri articoli del blog.

Il bello di avere questo template tag è che basta usare quel pezzo di codice per recuperare il link a qualsiasi articolo del vostro sito, e non dovete inserire codice in nessun link del vostro tema.

La Differenza tra Permalink, Slug e Link

In questo articolo ci concentreremo sui permalink in dettaglio, ma guarderemo anche agli slug. Qual è la differenza tra loro?

Il permalink è l’intero link ad un articolo. Quindi, il link che ho citato prima e riferito a un post di Kinsta sui widget è https://kinsta.com/blog/wordpress-widgets/.

Lo slug è la parte finale di quel permalink, ed è unica per quell’articolo. In questo caso, si tratta di wordpress-widgets.

Questo slug viene generato automaticamente per voi in base al titolo dell’articolo. E se volete creare manualmente uno slug per un articolo, potete farlo. Vi mostrerò come (e perché potreste volerlo) più avanti.

In un sito web statico, un URL identifica una risorsa con il suo nome e il percorso della directory, come mostrato nell’esempio seguente:

https://example.com/path/to/resource/wordpress-permalinks.html

Per avere dei buoni URL abbiamo solo bisogno di un file system ben strutturato e di risorse con nomi appropriati.

Ma il web è dinamico, e siamo abituati a gestire siti web che utilizzano CMS basati su database, il che significa che gli URL conterranno una serie di parametri i cui valori determinano la query da eseguire rispetto al database.

Consideriamo il seguente esempio:

https://example.com/?key1=val1&key2=val2

In questo URL noterete un separatore (il punto interrogativo) e un insieme di coppie chiave/valore (separate dalla “e commerciale” &) che costituiscono la stringa della richiesta. L’URL non soddisfa i requisiti di usabilità e accessibilità e dovrebbe essere convertito in un permalink più significativo e SEO-friendly.

Il modo in cui questi URL “brutti” vengono convertiti in permalink ottimizzati dipende dal vostro server web. Se siete utenti Apache, vi sarà richiesto di aggiungere una serie di direttive di riscrittura nel file .htaccess della cartella principale. Se siete utenti Nginx, aggiungerete una direttiva try_files nel file di configurazione principale.

Ma non preoccupatevi! Il più delle volte non vi sarà richiesto di configurare il webserver linea per linea perché WordPress lo farà per voi.

Come utente amministratore, potete impostare regole di riscrittura personalizzate in modo semplice e veloce dal pannello di amministrazione. Gli utenti avanzati e gli sviluppatori possono ottenere ancora di più grazie all’API di WordPress Rewrite, che fornisce funzioni e hook che portano la personalizzazione dei permalink ad un livello superiore.

Una Panoramica delle Richieste in WordPress

Con lo scopo specifico di costruire la query, eseguirla e memorizzare i risultati della banca dati di WordPress, WordPress fornisce la WP_Query class. Grazie a questa classe non dobbiamo preoccuparci della query, perché WP_Query gestirà automaticamente la richiesta, costruirà la query e la eseguirà. Poi, a seconda della gerarchia dei template, WordPress restituirà la risorsa richiesta.

WordPress accetta richieste per singoli post, pagine, post types e per un certo numero di archivi ordinati per categoria, tag, data, autore e altro ancora.

Inoltre, se le funzionalità predefinite non fossero sufficienti, gli sviluppatori possono costruire query personalizzate creando nuove istanze della classe WP_Query (l’oggetto query) o passando parametri specifici a un’istanza esistente della query prima della sua esecuzione.

I parametri di interrogazione sono denominati variabili di interrogazione e sono suddivisi in tre gruppi.

Variabili di Query Pubbliche

Queste variabili sono pubbliche nel senso che sono disponibili per essere utilizzate nelle richieste pubbliche (cioè gli URL). Grazie a queste variabili, possiamo chiedere i post degli autori:

?author=12?
author_name=mickey

Per categoria o tag:

?cat=4,5,6
?category_name=CMS
?tag=wordpress

Per data e ora:

?monthnum=201601
?year=2015?w=13
?day=31

Per posta o pagina:

?p=123
?name=hello-world
?page_id=234

E molto altro.

Variabili di Query Private

Queste variabili non sono destinate ad essere aggiunte alle stringhe di query nell’URL. Possono essere usate per influenzare le query solo all’interno di uno script (un plugin o un file functions.php di un tema).

La seguente stringa di query non restituirebbe il risultato atteso:

?meta_key=city&meta_value=London

meta_key e meta_value sono variabili di query private da non definire nelle stringhe di query. Dovrebbero essere passate a un’istanza dell’oggetto della query, come vi mostrerò più avanti.

Nel Codex potete trovare l’elenco completo delle variabili di query pubbliche e private.

Variabili di Query Personalizzate

Queste variabili definite dall’utente possono essere passate tramite stringhe di query URL molto simili alle variabili di query pubbliche. La differenza principale tra variabili pubbliche e personalizzate è che WordPress non gestirà da solo le variabili personalizzate, e dovremmo ottenere i loro valori da un plugin per personalizzare le query.

Detto questo, torniamo ai permalink.

Permalink WordPress Non Formattati e Variabili di Query

I permalink brutti mostrano la stringa di query, cioè la parte dell’URL contenente un insieme di variabili di query (la stringa di query) che determinerà la risorsa restituita.

Impostazione Plain (semplice) nella schermata delle impostazioni dei Permalink
Impostazione Plain (semplice) nella schermata delle impostazioni dei Permalink

A titolo di esempio, considerate i seguenti URL:

https://example.com/?cat=5
https://example.com/?cat=5,7,9

In risposta a questi URL, WordPress restituirebbe l’archivio degli articoli appartenenti alle categorie specificate.

Non ci limitiamo a un solo parametro per ogni URL. Negli esempi seguenti stiamo costruendo query più complesse:

?author_name=lucy&category_name=WebDev?tag=wordpress&m=201606

Nella prima stringa di query, author_name e category_name richiederanno tutti gli articoli dell’autore specificato nella categoria WebDev. Nella seconda stringa di query, tag e m richiederanno tutti gli articoli etichettati come “wordpress” e pubblicati nel giugno 2016.

Come potete vedere, possiamo impostare più di una variabile di query e forzare WordPress ad eseguire query avanzate semplicemente aggiungendo le coppie di chiavi=valore appropriate per interrogare le stringhe.

Pretty Permalink: Una Migliore Alternativa

Abilitando i Pretty Permalink abbiamo impostato una struttura URL utilizzabile, accessibile e SEO-friendly. Confrontiamo i seguenti URL:

https://example.com/?p=123
https://example.com/wordpress-permalinks/

In questo esempio, il primo permalink mostra la variabile p e il suo valore (il post ID), mentre il secondo URL mostra lo slug dell’articolo.

WordPress fornisce quattro formati di Pretty Permalink tra cui possiamo scegliere nella schermata delle impostazioni Permalink, come mostrato nell’immagine qui sotto.

I Pretty Permalink nelle impostazioni Permalink
I Pretty Permalink nelle impostazioni Permalink

Ma non ci si limita ai formati predefiniti, poiché WordPress consente di personalizzare il formato permalink impostando uno o più tag di struttura.

Opzione struttura personalizzata
Opzione struttura personalizzata

Ve li mostrerò in dettaglio più avanti.

Perché i Pretty Permalink Sono Importanti?

L’utilizzo dei Pretty Permalink per il vostro sito WordPress avrà due vantaggi: SEO e User Experience.

Perché? I motori di ricerca usano il vostro URL come indicazione dell’argomento trattato nell’articolo. Se il contenuto del permalink si riferisce al contenuto del vostro articolo, ciò aiuterà i motori di ricerca a determinare di cosa tratta il vostro contenuto e che corrisponde a ciò che dichiarate contenere.

A livello di esperienza utente, i Pretty Permalink sono preferibili perché rendono più facile agli utenti ricordare e utilizzare gli URL sul vostro sito. Nessuno ricorderà l’URL della vostra pagina di contatto se ha questa forma: vostro sito.com/?p=456. Ma si ricorderanno di yoursite.com/contact.

Lo slug del post è l’ultima parte dell’URL di un articolo. Se avete configurato le impostazioni dei permalink WordPress in modo che il nome del post venga usato, lo slug per un articolo chiamato ‘come creare dei pretty permalink’ verrà generato automaticamente come yoursite.com/how-to-create-pretty-permalinks/.

È uno slug decente. Dice agli utenti di che cosa tratta il post e per i motori di ricerca contiene “pretty permalink”, che potrebbe essere la parola chiave a cui state puntando.

Ma può essere migliorata.

I vostri slug dovrebbero essere abbastanza lunghi da includere le parole chiave a cui mirate, ma abbastanza corti da essere facilmente memorizzabili dagli utenti e da non confondere i motori di ricerca con molte parole inutili (ecco come creare permalink SEO-friendly in WordPress).

Quindi un articolo chiamato “come creare dei pretty permalink” potrebbe andare meglio se indicato come “pretty-permalinks“, dandovi un URL come yoursite.com/pretty-permalinks/pretty-permalinks/. O se avete più articoli sui Pretty Permalink e volete dare a questo uno specifico slug relativo al fatto che è una guida sul come crearli, potreste usare create-pretty-permalinks, che risulterà nell’URL yoursite.com/create-pretty-permalinks.

Oppure, per andare oltre, potreste migliorare ulteriormente la SEO includendo ‘WordPress’: example.com/create-wordpress-pretty-permalinks.

Quando le persone trovano il vostro link in un risultato di ricerca, non volete che il risultato della ricerca sia così lungo da non poter essere letto tutto. Di seguito sono riportati due risultati che ottengo per il blog di Kinsta quando cerco su Google “wordpress permalinks”.

Risultato di Google - Permalink WordPress
Risultato di Google – Permalink WordPress

Entrambi hanno slug ben ottimizzati. Il primo è wordpress-premalinks-url-rewriting, che indica che sta prendendo di mira quelle parole chiave, e il secondo è wordpress-slug, che è ancora più focalizzato.

Questi slug non sprecano parole. Dicono ai motori di ricerca di cosa parla l’articolo e nient’altro.

Potete ottimizzare i vostri slug per la SEO prima selezionando Post name nella schermata delle impostazioni dei permalink e poi modificando manualmente lo slug per ogni articolo quando lo si scrive.

L’uso dei Pretty Permalink e quello di slug brevi e memorabili vi darà anche vantaggi in termini di esperienza utente (UX).

Secondo un articolo del 1999 di Jacob Nielsen, un sito web utilizzabile richiede:

  • un nome di dominio facile da ricordare e facile da scrivere.
  • URL brevi.
  • URL facili da digitare.
  • URL che visualizzano la struttura del sito.
  • URL che sono “hackerabili” per consentire agli utenti di passare a livelli più alti di architettura dell’informazione attraverso l’hacking della fine dell’URL.
  • URL persistenti che non cambiano.

Un URL non dovrebbe mai cambiare, in quanto può essere memorizzato e condiviso in molti modi. Questo è il motivo per cui li chiamiamo permalink. Inoltre, un URL dovrebbe essere semantico, nel senso di essere immediatamente e intuitivamente significativo per gli utenti non esperti.

Quindi, anche se è possibile cambiare il permalink di un articolo dopo averlo pubblicato, non è una buona idea. Questo perché il permalink originale potrebbe essere già stato condiviso. Se avete bisogno di cambiarlo, assicuratevi di seguire le migliori pratiche di reindirizzamento su WordPress.

In WordPress è possibile modificare i permalink in diversi modi:

  • Potete modificare la schermata delle impostazioni Permalink per attivare i Pretty Permalink – cosa che dovreste fare non appena si imposta il sito web.
  • Potete modificare la struttura permalink per i tag e le categorie nella schermata Permalink.
  • Potete modificare i slug per i singoli articoli quando li create e li modificate.
  • Potete specificare la struttura dei link per i custom post type quando li registrate, scegliendo di utilizzare quella di default o di sovrascriverla.
  • Potete scrivere un plugin per modificare la struttura dei permalink.
  • Potete usare i reindirizzamenti per fare in modo che un permalink non aggiornato venga reindirizzato su un nuovo permalink.

Diamo un’occhiata a ciascuno di questi punti.

Modifica delle Impostazioni Generali dei Permalink

La schermata delle impostazioni Permalink è il primo posto dove andare per configurare i vostri permalink. Per accedervi andate su Impostazioni > Permalink.

Schermata delle impostazioni Permalink
Schermata delle impostazioni Permalink

Impostazioni Comuni

La prima sezione si occupa delle impostazioni per i singoli articoli. Le opzioni sono:

  • Semplice (Plain): usa l’ID del post per il link. Avrà senso per i browser, ma non significherà molto per gli esseri umani o i motori di ricerca. Il risultato è un URL di questo tipo: example.com/?p=123.
  • Giorno e nome (Day and name): comprende la data completa in cui l’articolo è stato pubblicato e il suo nome (o più precisamente il suo slug). Il risultato è un URL di questo tipo: example.com/2020/06/01/my-post/.
  • Mese e nome (Month and name): questa è una versione più breve della precedente, che include solo mese e anno ma non il giorno: example.com/2020/06/my-post/.
  • Numerico: Come l’opzione Semplice, usa l’ID del post e non è molto facile da leggere: example.com/archives/123.
  • Nome articolo (Post name): questa opzione non include date o ID del post ma utilizza solo lo slug, come in: example.com/my-post/.
  • Struttura personalizzata (Custom structure): qui potete creare la vostra struttura personalizzata. Usa i tag per ottenere informazioni basate sui dati del post, e il testo statico per aggiungere qualcosa che non cambierà tra un post e l’altro.

Questi tag sono parole chiave specifiche avvolte all’interno del carattere %. WordPress fornisce i seguenti tag:

  • %year% – anno di pubblicazione del post (quattro cifre).
  • %monthnum% – il mese di pubblicazione (due cifre).
  • %day% – il giorno della pubblicazione (due cifre).
  • %hour% – l’ora di pubblicazione (due cifre).
  • %minute% – il minuto di pubblicazione (due cifre).
  • %second% – il secondo della pubblicazione (due cifre).
  • %post_id% – l’ID unico del post (intero).
  • %postname% – lo slug del post (cioè la stringa che rappresenta il titolo del post).
  • %category% – lo slug della categoria.
  • %author% – lo slug dell’autore.

Provate a fare clic sul pulsante di opzione Struttura personalizzata e aggiungete una delle seguenti stringhe nel campo di testo:

  • /%author%/%postname%/
  • /%year%/%postname%/
  • /%category%/%postname%/

Ognuna di queste stringhe genera un diverso permalink con specifici valori semantici, come mostrato di seguito:

example.com/rachelmccollin/wordpress-permalinks/
example.com/2020/wordpress-permalinks/
example.com/CMS/wordpress-permalinks/

Nel primo esempio, l’URL risultante evidenzia l’autore del post. Gli altri due formati ci indicano rispettivamente l’anno di pubblicazione e la categoria del post. Sta a voi scegliere il formato più adatto a voi.

Una volta selezionata l’opzione desiderata, passate alla sezione Opzionale oppure fate clic su Salva modifiche per salvare le impostazioni.

Impostazioni Opzionali per i Permalink

Oltre alle impostazioni per i singoli post, la schermata delle impostazioni Permalink consente anche di impostare una struttura personalizzata per gli archivi di categorie e tag.

Se non lo fate, il comportamento di default è quello di includere /category/category-slug/ alla fine del permalink. Quindi, se avete una categoria ‘in evidenza’, la sua pagina di archivio si troverà su vostro sito.com/category/category/featured.

Impostazioni permalink opzionali
Impostazioni permalink opzionali

Potete modificarlo nella sezione Opzionale della pagina delle impostazioni Permalink. Quindi, se volete avere yoursite.com/blog/featured/ come permalink per quell’archivio di categorie, dovete inserire il blog nel campo Categoria base. Non è necessario inserire lo slash o utilizzare tag.

Come Cambiare i Permalink e gli Slug per Articoli e Pagine Singoli

Una volta che avete attivato dei permalink sul vostro sito WordPress, è il momento di ottimizzare lo slug per i singoli articoli e le singole pagine.

È meglio farlo quando create i contenuti. Se cambiate la slug di un articolo, allora cambierete l’URL che utilizza, e tutti i link che voi o i vostri visitatori avete condiviso in passato non funzioneranno più.

Per modificare la slug di un post, si lavora nella schermata di modifica di quello specifico articolo. Andate su Articoli e selezionate il post che volete modificare. (Se state creando l’articolo, sarete già nella schermata giusta).

Nella schermata di modifica dell’articolo, selezionate il riquadro Documenti sul lato destro e passate alla sezione Permalink. Fate clic sulla freccia a destra se non è già aperto.

Modifica del permalink nella schermata di modifica dell’articolo
Modifica del permalink nella schermata di modifica dell’articolo

Lo slug generato automaticamente verrà visualizzato nel campo Slug dell’URL. Potete modificarlo per rendere lo slug più breve e più focalizzato.

Prima di modificarlo, copiate il vecchio slug da qualche parte in modo da poterlo usare se avete bisogno di impostare un reindirizzamento in seguito (questo vale solo per gli articoli pubblicati in precedenza).

Modifica dello slug
Modifica dello slug

Ora fate clic sul pulsante Pubblica o Aggiorna per salvare le modifiche.

Non dimenticate: se avete modificato lo slug per un articolo esistente, potreste creare un problema per le persone che hanno il link originale e dovreste quindi usare i redirect.

Come Modificare le Impostazioni Permalink per le Pagine di Archivio

Per modificare le impostazioni permalink per le singole pagine di archivio, potete modificare le impostazioni per la ‘categoria’ o ‘tag’ di base nella schermata delle impostazioni Permalink. È anche possibile modificare lo slug per una singola categoria, tag o tassonomia personalizzata.

Vediamo come si fa, poi passiamo a modificare il permalink per le tassonomie personalizzate e i tipi di post al momento della registrazione.

Cambiare lo Slug per le Categorie e i Tag

Per fare questo, andate su Articoli > Categorie (o Articoli> Tag).

Schermata di modifica delle categorie
Schermata di modifica delle categorie

Cercate la categoria o il tag di cui volete modificare lo slug e fate clic sul suo nome.

Modifica di uno slug di categoria
Modifica di uno slug di categoria

Potete quindi digitare uno slug per la categoria o il tag. WordPress ne genererà automaticamente uno in base al nome della categoria o del tag, ma non è necessario mantenere quello. Come per i post, è ragionevole farlo al momento di impostare la categoria o il tag. Se lo fate in seguito, dovrete impostare un reindirizzamento.

Allo stesso modo, se impostate una tassonomia personalizzata, o se ne viene creata una da un plugin, potete modificare gli slug per i singoli termini in quella tassonomia. Se invece volete modificare la slug per la tassonomia stessa, dovrete modificare un po’ il codice.

Cambiare lo Slug per le Tassonomie Personalizzate

Quando registrate una tassonomia personalizzata, le pagine di archivio di tale tassonomia avranno automaticamente un URL come yoursite.com/taxonomy/term, dove taxonomy è l’ID tassonomia e term è lo slug del termine.

Immaginiamo di registrare una tassonomia personalizzata per le lingue con l’ID kinsta_language, che utilizza un prefisso distinto da qualsiasi altra tassonomia registrata da altri plugin. Si potrebbe poi creare un termine con lo slug italiano.

L’URL per l’archivio di quel termine tassonomico sarebbe yoursite.com/kinsta_language/italiano.

Ma cosa succede se volete cambiare il prefisso in modo che non includa quel prefisso e sia più facile da usare? Potete farlo utilizzando l’argomento rewrite quando registrate la tassonomia.

Ecco il codice da utilizzare per registrare la tassonomia, compreso l’argomento rewrite:

function kinsta_register_taxonomy() {                

 // languages
 $labels = array(
  'name'=> __( 'Languages' ),
  'singular_name' => __( 'Language' ),
  'search_items' => __( 'Search Languages' ),
  'all_items' => __( 'All Languages' ),
  'edit_item' => __( 'Edit Languages' ),
  'update_item' => __( 'Update Languages' ),
  'add_new_item' => __( 'Add New Language' ),
  'new_item_name' => __( 'New Language Name' ),
  'menu_name' => __( 'Languages' ),
 );

 $args = array(
  'labels' => $labels,
  'hierarchical' => true,
  'sort' => true,
  'args' => array( 'orderby' => 'term_order' ),
  'rewrite' => array( 'slug' => 'language' ),
  'show_admin_column' => true,
  'show_in_rest' => true
 );

 register_taxonomy( ‘kinsta_language', array( 'post', ‘attachment' ), $args);   

}

add_action( 'init', 'kinsta_register_taxonomy' );

La linea importante in questa porzione di codice è questa:

'rewrite' => array( 'slug' => 'language' ),

Che riscrive quello slug da kinsta_language (l’ID) a language (il nuovo valore). In questo modo il vostro nuovo URL sarebbe yoursite.com/language/italiano. Molto più facile da usare!

Come Cambiare lo Slug per i Custom Post Type

I custom post type funzionano allo stesso modo delle tassonomie personalizzate quando li registrate, quindi avranno un URL che include l’ID del custom post type.

Immaginiamo di registrare un custom post type chiamato kinsta_book e di creare un articolo per quel tipo di post chiamato ‘Huckleberry Finn’, con lo slug huckleberry-finn.

L’URL sarebbe il yoursite.com/kinsta_book/huckleberry-finn. E lo slug per l’archivio dei post type sarebbe yoursite.com/kinsta_book.

Anche in questo caso, potete modificarlo quando registrate il custom post type, utilizzando l’argomento rewrite. Ecco il codice che include questo argomento:

function kinsta_register_post_type() {

 // books
 $labels = array(
  'name' => __( 'Books' ),
  'singular_name' => __( 'Book' ),
  'add_new' => __( 'New Book' ),
  'add_new_item' => __( 'Add New Book' ),
  'edit_item' => __( 'Edit Book' ),
  'new_item' => __( 'New Book' ),
  'view_item' => __( 'View Book' ),
  'search_items' => __( 'Search Books' ),
  'not_found' =>  __( 'No Books Found' ),
  'not_found_in_trash' => __( 'No Books found in Trash' ),
 );

 $args = array(
  'labels' => $labels,
  'has_archive' => true,
  'public' => true,
  'hierarchical' => false,
  'supports' => array(
   'title',
   'editor',
   'excerpt',
   'custom-fields',
   'thumbnail',
   'page-attributes'
  ),
  'taxonomies' => array( ‘kinsta_language', 'category'),
  'rewrite'   => array( 'slug' => 'book' )
 );
 
 register_post_type( ‘kinsta_book', $args );

}

add_action( 'init', 'kinsta_register_post_type' );

La linea importante per lo slug è questa:

'rewrite'   => array( 'slug' => 'book' )

Quindi ora gli URL saranno il yoursite.com/book/huckleberry-finn per un singolo libro e yoursite.com/book per l’archivio.

Modifica dei Permalink Usando Campi Personalizzati

Oltre alle variabili di query pubbliche e private, WordPress consente agli sviluppatori e agli utenti avanzati di definire le proprie variabili di query personalizzate. Una volta registrate, queste variabili possono essere aggiunte alle stringhe di query, proprio come le variabili di query pubbliche, e i loro valori possono essere utilizzati anche per influenzare le query.

Ecco come costruire una meta query personalizzata (cioè una query che recupera i post per campo personalizzato) sfruttando le variabili di query personalizzate.

Per raggiungere questo obiettivo, svilupperemo un plugin dal quale registreremo le variabili personalizzate, otterremo i loro valori e modificheremo la query di conseguenza.

Ecco come fare:

Create un plugin nella vostra directory wp-content/plugins. Aggiungete una funzione per registrare le variabili della query:

/**
 * Register custom query vars
 *
 * @param array $vars The array of available query variables
 */

function myplugin_register_query_vars( $vars ) {

 $vars[] = 'city';
 return $vars;

}

add_filter( 'query_vars', 'myplugin_register_query_vars' );

Il filtro query_vars consente di aggiungere, rimuovere o modificare le variabili delle query pubbliche prima dell’esecuzione della query. La funzione di callback nell’esempio memorizza come argomento un array delle variabili disponibili, aggiunge una nuova variabile e restituisce lo stesso array.

Aggiungete poi questa funzione che utilizza il valore della variabile per modificare la query:

/**
 * Build a custom query
 *
 * @param $query obj The WP_Query instance (passed by reference)
 *
 */

function myplugin_pre_get_posts( $query ) {

 // check if the user is requesting an admin page
 // or current query is not the main query
 if ( is_admin() || ! $query->is_main_query() ){
  return;
 }

 $city = get_query_var( 'city' );

 // add meta_query elements
 if( !empty( $city ) ){
  $query->set( 'meta_key', 'city' );
  $query->set( 'meta_value', $city );
  $query->set( 'meta_compare', 'LIKE' );
 }

}

add_action( 'pre_get_posts', 'myplugin_pre_get_posts', 1 );

L’hook dell’azione pre_get_posts viene attivato dopo la creazione della query, ma prima che venga eseguita. Quindi possiamo agganciare una funzione di callback a questa azione per apportare le nostre modifiche alla query prima che venga eseguita. Questo è quello che succede:

  • La funzione di callback mantiene un’istanza dell’oggetto $query, che viene passata per riferimento e non per valore. Ciò significa che qualsiasi modifica all’oggetto della query influisce sulla query originale e non su una sua copia. Per questo motivo, dobbiamo essere sicuri di quale query verrà eseguita (la query principale).
  • In seguito, si ottiene il valore della città dalla stringa di query corrente grazie alla funzione get_query_var.
  • Infine, se $city non è vuota, possiamo impostare gli elementi di meta query meta_key, meta_value e meta_compare. Questi ultimi sono variabili di query private non disponibili per le richieste pubbliche. I loro valori possono essere impostati solo dall’interno dello script.

Ora attivate il plugin, aggiungete il campo personalizzato della città ad un certo numero di post. Andate su Impostazioni > Permalink per aggiornare i permalink: non dovete fare nulla, vi basta visitare lo schermo.

Ora controllate gli URL come segue:

https://example.com/?city=Londra

In risposta a questa richiesta, WordPress restituirebbe tutti i post in cui il valore del campo city è Londra.

Il nostro ultimo compito è quello di convertire l’URL non formattato dell’esempio precedente in una bella struttura permalink. Aggiungiamo la seguente funzione al nostro plugin:

/**
* Add rewrite tags and rules
*/

function myplugin_rewrite_tag_rule() {

 add_rewrite_tag( '%city%', '([^&]+)' );
 add_rewrite_rule( '^city/([^/]*)/?', 'index.php?city=$matches[1]','top' );

}

add_action('init', 'myplugin_rewrite_tag_rule', 10, 0);

Le funzioni add_rewrite_tag e add_rewrite_rule fanno parte dell’API Rewrite. add_rewrite_tag rende WordPress consapevole della variabile della query della città, mentre add_rewrite_rule specifica una nuova regola di riscrittura. Entrambe le funzioni dovrebbero essere agganciate all’azione init. Grazie al nuovo tag e alla nuova regola, possiamo utilizzare il seguente URL:

https://example.com/city/London/

WordPress restituirà un archivio di post in cui il valore del campo personalizzato della città è Londra.

Nota: ogni volta che aggiungerete una nuova regola di riscrittura, i permalink di WordPress devono essere aggiornati dalla schermata Permalink nel menu di amministrazione delle impostazioni.

WooCommerce crea post type e tassonomie personalizzate tutte proprie, tutte con permalink predefiniti dal plugin.

Potete modificare le impostazioni del permalink e degli slug per tutti loro.

Modifica dei Permalink della Categoria di Prodotto, del Tag e dell’Attributo

Ci sono due aspetti da considerare per la modifica dei permalink per le categorie di prodotti, i tag e gli attributi: la struttura e lo slug. Questi funzionano in modo simile alle categorie e ai tag normali.

Per modificare la struttura permalink andate su Impostazioni > Permalink e cercate la sezione Optional, dove WooCommerce avrà aggiunto alcuni campi extra.

Impostazioni permalink opzionali quando WooCommerce è installato
Impostazioni permalink opzionali quando WooCommerce è installato

Qui è possibile modificare le impostazioni dei permalink per le tre tassonomie personalizzate aggiunte da WooCommerce:

  • Categorie di prodotto: l’impostazione predefinita è /product-category/ ma è possibile modificarla se usate una terminologia diversa nel vostro negozio. Assicuratevi che la vostra modifica non sia in contrasto con le vostre impostazioni per le categorie regolari, che non sono la stessa cosa.
  • Tag di prodotto: il default è /product-tag/, e potete cambiarlo se lo desiderate. Assicuratevi di evitare uno scontro con i normali tag dei post.
  • Attributi del prodotto: questi funzionano in modo diverso dalle altre due tassonomie e hanno una struttura diversa. Qualsiasi cosa aggiungiate qui sarà sempre seguita dallo slug per il nome del singolo attributo (ad es. la dimensione) e l’attributo stesso (il termine, ad es. grande).

Se volete modificare lo slug per una singola categoria o tag, andate su Prodotti > Categorie (o Prodotti > Tag) e modificateli nello stesso modo in cui pubblichereste i tag e le categorie.

Modifica degli slug di categoria di prodotto
Modifica degli slug di categoria di prodotto

La modifica degli attributi è diversa perché non solo si ha l’attributo in sé, ma anche i termini dell’attributo.

Iniziate andando su Prodotti > Attributi.

Schermata degli attributi del prodotto
Schermata degli attributi del prodotto

Quando create un nuovo attributo, usate il campo Slug per impostare lo slug nello stesso modo in cui si imposterebbe un tag o una categoria. In alternativa, per modificare lo slug per un attributo esistente, fate clic sul link Modifica sotto quell’attributo nella lista di destra.

Modifica degli slug di attributi di prodotto
Modifica degli slug di attributi di prodotto

Fate clic su Aggiorna per salvare le modifiche.

Per modificare gli slug dei termini dell’attributo, andate alla schermata degli attributi e fate clic sul link Configura termini accanto all’attributo. Questo vi porterà all’elenco dei termini per quell’attributo.

Elenco dei termini degli attributi di prodotto
Elenco dei termini degli attributi di prodotto

Ora modificate lo slug per quel termine proprio come fareste per una categoria o un tag. Questo verrà poi aggiunto all’URL dell’archivio per i prodotti che contengono quel termine.

Cambiare i Permalink dei Prodotti

Potete modificare i permalink di prodotto tramite Impostazioni > Permalink. Scorrete fino alla sezione Prodotto permalink.

Impostazioni dei permalink di prodotto
Impostazioni dei permalink di prodotto

Qui potete scegliere tra quattro impostazioni permalink per i vostri prodotti:

  • Predefinito: se avete già attivato dei pretty permalink, questo utilizzerà lo slug di ogni prodotto con la base /prodotto/.
  • Shop base: invece di usare /prodotto/, il vostro negozio userà /shop/.
  • Shop base con categoria: inserisce la categoria del prodotto attuale nell’URL. Questo potrebbe aggiungere le parole chiave che desiderate indirizzare se le categorie di prodotti le riflettono, ma non aiuterà l’esperienza utente in quanto genera URL lunghi.
  • Base personalizzata: crea la vostra struttura di URL utilizzando le parole che si applicano al vostro negozio. Non potete rimuovere completamente la base, dovete usare qualcosa.

Una volta scelta l’opzione desiderata, fate clic sul pulsante Salva modifiche per salvare la vostra scelta.

Potete anche modificare lo slug per un singolo prodotto nella schermata di modifica del prodotto, esattamente come fareste per un articolo o una pagina.

È possibile utilizzare un plugin di terze parti per apportare modifiche alle impostazioni dei permalink e andare oltre a quanto consentito dalla schermata delle impostazioni predefinite di WordPress.

Plugin WordPress Custom Permalinks
Plugin WordPress Custom Permalinks
  • Il plugin Custom Permalinks consente di impostare l’URL di qualsiasi categoria di articolo o tag su qualsiasi cosa si desideri. Imposta anche i reindirizzamenti in modo che i vecchi URL funzionino anche dopo il cambio.
  • Il plugin Permalink Manager Lite supporta sia tipi di post personalizzati che tassonomie personalizzate nella versione pro. Include anche reindirizzamenti e funziona con plugin di terze parti come WooCommerce e Yoast.

Se sapete cosa state facendo e siete certi di non rompere nulla, potete anche modificare i permalink in phpMyAdmin.

Questo è qualcosa che potrebbe essere necessario fare quando, per qualsiasi motivo, non potete accedere alla schermata delle impostazioni Permalink.

Iniziate con il backup del vostro database. Lo modificherete direttamente, quindi è importante eseguire il backup nel caso in cui commettiate un errore.

Entrate in phpMyAdmin.

Se siete cliente Kinsta, potete farlo accedendo a MyKinsta e selezionando il sito con cui volete lavorare.

Scorrete verso il basso nella schermata Info e fate clic sul pulsante Apri phpMyAdmin.

Aprire phpMyAdmin su MyKinsta
Aprire phpMyAdmin su MyKinsta

Digitate il nome utente e la password del vostro database per accedere a phpMyAdmin. È possibile recuperarli dalla schermata Info.

Fate clic sulla scheda Banche dati in alto e selezionare la banca dati con cui desiderate lavorare.

Struttura del database in phpMyAdmin
Struttura del database in phpMyAdmin

Selezionate la tabella wp_options e trovate la voce permalink_structure nella colonna option_name. Potrebbe essere necessario navigare oltre la prima pagina delle voci.

Trovare la voce permalink_structure
Trovare la voce permalink_structure

Fate clic sul link Edit sulla sinistra per quella voce, poi sotto il campo option_value, aggiungete la struttura permalink che desiderate utilizzare. Usate i tag che abbiamo identificato in precedenza nella schermata delle impostazioni Permalink.

Modifica della struttura dei permalink
Modifica della struttura dei permalink

Fate clic su Go. Ora i vostri permalink saranno aggiornati.

Per ulteriori approfondimenti, date un’occhiata al nostro articolo: Come cambiare l’URL di WordPress o il video:

Le immagini hanno un permalink tutto loro, e ogni immagine o file multimediale che caricate sul vostro sito avrà un certo numero di link creati per esso:

  • Il link all’immagine che avete caricato – l’immagine originale.
  • I link per le nuove immagini che vengono generate utilizzando i formati di supporto impostati tramite Impostazioni > Media.

Il Link all’Immagine Originale

Quando caricate un’immagine, viene creato un link univoco al file in cui è memorizzata sul vostro server. Questo includerà il percorso della cartella in cui è conservata, cioè wp-content/uploads.

Il percorso include anche la data in cui è stata caricata l’immagine. Ciò significa che se il mese prossimo (o l’anno prossimo) caricherete un’altra immagine con lo stesso nome di file, le immagini non saranno confuse in quanto avranno percorsi di file unici.

Se il 1° aprile 2020 carichate un’immagine chiamata funnycat.jpg, il suo link sarà il yoursite.com/wp-content/uploads/04/funnycat.jpg. Lo 04 indica che il file è stato caricato in aprile. WordPress crea una cartella numerata nella directory uploads per ogni mese.

Se caricate un file che non è un’immagine, l’URL funziona allo stesso modo: yoursite.com/wp-content/uploads/04/document.pdf.

Se caricate più di un file con lo stesso nome in un dato mese, WordPress aggiungerà un numero alla fine del nome del file. Quindi, caricando un’altra immagine chiamata funnycat.jpg, il risultato sarà funnycat-1.jpg.

Se avete bisogno di collegarvi all’immagine originale o di trovarla per verificare che funzioni correttamente, ecco come trovare il link.

Potete trovare il link al file allegato anche andando su Media > Libreria e facendo clic sul file. Vedrete la schermata di modifica per quel file e troverete il suo URL nel campo URL del file sul lato destro.

Link all'immagine originale
Link all’immagine originale

Potete anche collegarvi al file utilizzando la funzione wp_get_attachment_image() fornita da WordPress. Questa è una pratica migliore in quanto significa che il collegamento non cambierà se l’allegato viene spostato in futuro. Si tratta di una funzione che si usa in un plugin o in un file template di tema, e utilizza l’ID univoco del file allegato.

Nel caso della mia immagine funnycat.jpg, l’ID è 4995. Posso ottenerlo andando alla schermata di modifica dell’immagine e facendo clic sull’URL di questa schermata, nella parte superiore della finestra del browser. Le cifre finali corrispondono all’ID.

Per recuperare questa immagine in un file template o in un plugin, userei questo codice:

<?php wp_get_attachment image( ‘4995’ ); ?>

Otterrei in questo modo l’immagine a grandezza naturale. Se volessi anche l’output, aggiungerei echo:

<?php echo wp_get_attachment image( ‘4995’ ); ?>

Permalink per Immagini di Diverse Dimensioni

WordPress creerà le immagini utilizzando le impostazioni di dimensione del file che avrete configurato per il vostro sito. Per farlo, andate su Impostazioni > Media.

Schermata delle impostazioni dei media
Schermata delle impostazioni dei media

Se la vostra immagine è superiore a quanto indicato nell’opzione Dimensione grande, WordPress creerà tre immagini: grande, media e miniatura.

Non userà questa convenzione per nominare l’immagine, perché in futuro potreste decidere di cambiare le impostazioni. Utilizza invece le dimensioni del file all’interno del nome del file e le salva nello stesso posto dell’immagine originale, nella cartella del mese in wp-content/uploads.

Il modo più semplice per trovare i link è entrare nel vostro client FTP e trovare tutte le immagini caricate in un dato mese.

Immagini caricate nel client FTP
Immagini caricate nel client FTP

Prendiamo l’immagine che ho caricato sul mio sito chiamato funnycat.jpg. Potete vederla nell’immagine qui sopra.

WordPress ha anche creato dei file extra utilizzando le impostazioni di dimensione dei file per il mio sito:

  • funnycat-150×150.jpg
  • funnycat-222×300.jpg
  • funnycat-300×200.jpg
  • funnycat-757×1024.jpg
  • funnycat-768×1040.jpg
  • funnycat-1135×1536.jpg
  • funnycat-1513×2048.jpg

Ci sono più dimensioni di quelle standard perché sto usando dei plugin che fanno uso di dimensioni di immagine extra e hanno impostato una dimensione aggiuntiva personalizzata per uno dei miei template di pagina nel tema. Ma, volendolo, potreste usare il link a uno qualsiasi di questi come un hard link

Tuttavia, un’opzione migliore se volete collegare l’immagine, sarebbe quella di usare la funzione wp_get_attachment_image() che abbiamo già visto, e aggiungere un parametro extra per la dimensione dell’immagine.

Quindi, per produrre l’immagine di medie dimensioni, potreste usare questo:

<?php echo wp_get_attachment image( ‘4995’, ‘medium’ ); ?>

Si tratta di uno stratagemma molto più robusto per recuperare l’immagine invece che creare un hard link nel vostro codice.

Modificare lo slug per un articolo esistente, o cambiare le impostazioni del permalink in generale, potrebbe causare un problema se avete precedentemente condiviso gli articoli usando i vecchi link. Se qualcuno fa clic su questi link, atterrerà su una pagina 404.

È possibile risolvere questo problema creando dei reindirizzamenti dai vecchi link a quelli nuovi.

Reindirizzamento di Singoli Articoli e Pagine

Per reindirizzare il vecchio slug da un post al nuovo, è necessario impostare una regola di reindirizzamento per questi due URL.

Se siete clienti Kinsta, potete creare delle regole di reindirizzamento nel cruscotto di MyKinsta.

Cercate il vostro sito e poi fate clic sull’opzione Redirects nel menu.

Reindirizzamenti in MyKinsta
Reindirizzamenti in MyKinsta

Fate clic sul pulsante Add redirect rule per aprire il popup delle regole di reindirizzamento.

Aggiungere la regola di reindirizzamento su MyKinsta
Aggiungere la regola di reindirizzamento su MyKinsta

Per aggiungere il redirect, selezionate 301 redirect, quindi digitate il vecchio slug come il valore Redirect from e il nuovo slug come il valore Redirect to.

Fate clic sul pulsante Add redirect rule e il vostro reindirizzamento sarà impostato.

Se non siete clienti Kinsta, potete usare un plugin di reindirizzamento per impostare i reindirizzamenti. Il plugin Redirection è il più popolare. Vi permetterà di impostare i reindirizzamenti manualmente, monitorerà anche le modifiche ai vostri slug e imposterà automaticamente i reindirizzamenti per voi. Fate attenzione a evitare i loop di reindirizzamento, poiché questi portano all’errore “too many redirects“, impedendo il caricamento delle pagine

Qui sotto potete vedere che ho cambiato lo slug per uno dei miei post e il plugin l’ha presa e ha impostato una regola di reindirizzamento.

Impostazione della regola di reindirizzamento con il plugin Redirects
Impostazione della regola di reindirizzamento con il plugin Redirects

Reindirizzamento delle Pagine Archivio

Se modificate la struttura delle pagine dell’archivio utilizzando la sezione Opzionale nella pagina delle impostazioni Permalink, chiunque utilizzi il vecchio link ad un archivio di categoria atterrerà su una pagina 404. Quindi dovrete impostare un reindirizzamento con metacarattere.

In MyKinsta, create una regola di reindirizzamento che utilizzi la struttura di base che stavate usando prima e quella che state usando ora, con un asterisco come metacarattere dopo di essa.

Nel campo Redirect from, digitate il vecchio percorso alle categorie, con un metacarattere. Il formato dovrà essere /oldslug/(.*)$. La voce Redirect to dovrà invece avere il formato /newslug/$1.

Quindi, se avete cambiato la struttura dell’URL della categoria in modo che compaia blog prima del nome della categoria invece che il generico categoria, dovreste inserire /category/(.*)$ nel campo Redirect from e /blog/$1 nel campo Redirect to.

Aggiunta di un reindirizzamento con metacarattere su MyKinsta
Aggiunta di un reindirizzamento con metacarattere in MyKinsta

Se utilizzate il plugin Redirection, è necessario abilitare prima le funzioni Regex, poiché l’asterisco metacarattere è una funzione Regex.

Andate su Tools > Redirection e poi sulla sezione Add new redirection dello schermo.

Creazione di una nuova regola di reindirizzamento con il plugin di reindirizzamento
Creazione di una nuova regola di reindirizzamento con il plugin di reindirizzamento

Fate clic sul menu a tendina URL Options/Regex e spuntate la casella Regex.

Impostazione di un reindirizzamento con metacarattere con il plugin Redirection
Impostazione di un reindirizzamento con metacarattere con il plugin Redirection

Nel campo Source URL, digitate il vecchio percorso delle categorie con un metacarattere. Deve avere questa forma: /oldslug/(.*)$. La voce per il campo Target URL deve prendere il sorgente /newslug/$1. Funziona esattamente come in MyKinsta.

Date un’occhiata alla nostra video guida alle migliori pratiche di reindirizzamento di WordPress:

Occasionalmente potreste scoprire che i permalink non funzionano come vi aspettate. Ecco cosa fare se questo accade.

I Permalink Non Funzionano Dopo la Registrazione di un Post Type

A volte capita di registrare un nuovo post type o una nuova tassonomia e i link alle relative pagine dell’archivio o agli articoli di quel post type non funzionano.

Niente panico! Questo accade semplicemente perché WordPress non sa che il post type personalizzato o la tassonomia implicano una modifica delle impostazioni dei permalink. Basta andare su Settings > Permalink per aggiornare le impostazioni. Non è nemmeno necessario apportare modifiche o fare clic sul pulsante Salva modifiche – sarà sufficiente aprire lo schermo.

I Permalink Non Si Comportano nel Modo in Cui Vorreste Che Si Comportassero

Se il vostro permalink non funziona come vi aspettate e questo non dipende dal fatto che avete appena registrato un tipo di post personalizzato o una tassonomia, provate questi suggerimenti.

  • Verificate di aver digitato correttamente l’URL nel browser.
  • Andate su Settings > Permalink e controllate la configurazione. I tag sono corretti? Assicuratevi di non aver tralasciato nulla o di non aver usato la sintassi sbagliata.
  • Cancellate la cache del vostro sito web se state usando un plugin per la cache. Il caching può interferire con le modifiche ai link.
  • Se avete cambiato le impostazioni dei permalink, potreste avere dei link nel corpo del vostro sito web che sono ormai obsoleti. Modificateli o impostate i reindirizzamenti.
  • Controllate se avete cambiato manualmente lo slug per qualche post e se questi devono essere modificati.
  • Verificate se è installato un plugin di reindirizzamento o un plugin che include il reindirizzamento. In caso affermativo, controllate quali reindirizzamenti avete aggiunto alle impostazioni.
  • Se avete dei plugin che influenzano i tipi di post o i link, provate a disattivarli e vedete se questo risolve il problema.
  • Se non è possibile accedere alla schermata delle impostazioni dei permalink, usate il metodo descritto in precedenza per modificare i permalink tramite phpMyAdmin.

Seguite questi consigli e dovreste essere in grado di far funzionare i vostri permalink senza problemi.

Riepilogo

I permalink sono una funzionalità incredibilmente utile di WordPress. Potete usarli per migliorare l’esperienza dell’utente e aumentare il vostro posizionamento nei motori di ricerca.

Se seguite la guida di cui sopra, avrete dei permalink ottimizzati. Sarete in grado di configurarli per farli funzionare esattamente nel modo in cui ne avete bisogno, per tutti i tipi di post, tassonomie e slug personalizzati.

Ora tocca a voi: come gestite i vostri permalink? Ci siamo dimenticati di parlare di qualche aspetto dei permalink di WordPress? Fatecelo sapere nei commenti qui sotto!

Rachel McCollin

Rachel McCollin has been helping people build websites with WordPress since 2010. She's a huge fan of self-hosted WordPress and wants to help as many people as possible create an awesome website with it.