§ 31. La pagina genitore stabilita per default su WordPress

Poniamoci una semplice domanda: è possibile fare in modo che tutte le nuove pagine che andiamo a creare su un sito WordPress abbiano una pagina-genitore prestabilita? Ovviamente intendo una pagina diversa dalla index… Una cosa del genere potrebbe essere necessaria per una molteplicità di motivi, mentre noi possiamo ragionevolmente temere di dimenticarci di impostare manualmente la pagina-genitore tutte le volte che pubblichiamo una nuova pagina… Oppure non ci piace fare troppe operazioni manuali uguali. Quindi vogliamo automatizzare questa parte del lavoro.
In realtà la soluzione è molto semplice: possiamo inserire nel nostro tema una funzione che indichi una pagina concreta nell’apposito campo della form di scrittura/modifica della pagina-«figlio». La pagina-genitore prestabilita può essere individuata, al fine del nostro codice PHP, attraverso il proprio id. Supponiamo quindi che la pagina che vogliamo impostare come genitore di default abbia id=58. L’unica cosa che dobbiamo fare è inserire nel file functions.php del tema questo codice:

add_filter( 'wp_insert_post_data', 'set_parnt_page_dynamically' );
function set_parnt_page_dynamically( $data )
{
    if ($data['post_type'] == 'page' )
        $data['post_parent'] = 58;
    return $data;
}

Ovviamente, l’unica cosa che dovete personalizzare nel suddetto codice è il valore dell’id: si trova alla riga 5 del listing appena riportato. Poi salvate e caricate il file modificato sul server.

N.B.: scoprire l’id di una qualsiasi pagina (ma anche di un qualsiasi articolo) creata con il WordPress è semplicissimo. Andate sulla admin, aprite l’elenco delle pagine e posizionate il cursore sul nome della pagina che vi interessa. In basso a sinistra comparirà una riga contenente un indirizzo. L’id della rispettiva pagina è quel numero che segue dopo l’espressione «post=».

Da questo momento, ogni qualvolta che andate a creare una nuova pagina del sito dalla vostra admin di WordPress, nel menu laterale a destra vedrete la pagina-genitore già impostata (il suo nome dipende dalla organizzazione del vostro sito, nel mio caso è l’indice dell’Inerario):

Siamo riusciti a impostare una pagina-genitore di default per tutte le nuove pagine del sito! Se in qualità della pagina-genitore di default dovesse essere scelta una pagina che a sua volta è la figlia di qualche altra pagina, l’intera gerarchia sarà rispettata anche nella posizione della pagina pubblicata con l’aiuto della funzione appena vista.
Naturalmente, la suddetta soluzione non impedisce di scegliere dal menu a tendina una pagina-genitore diversa da quella impostata per default. Con il codice inserito come descritto sopra, semplicemente, abbiamo automatizzato la scelta più ricorrente.

N.B.: tale metodo funziona solo con le pagine, mentre per gli articoli rimane – almeno per ora – una cosa impossibile in quanto contraria alla logica interna di WordPress: la pagina-genitore degli articoli è sempre la prima pagina del blog (indipendentemente dal fatto che lo chiamiate o meno con questa parola). Eventualmente, potete considerare l’opzione di cambiare la posizione del blog stesso nella gerarchia delle pagine del vostro sito.