Creare un template diverso per ogni pagina WordPress
Continuiamo lo studio dei template files di WordPress e vediamo quali sono quelli che si occupano di mostrare i Post Type di tipo Page (Pagina).
In WordPress i Page Post Type, ovvero le pagine, servono per mostrare del contenuto di tipo statico. Cioè quelle pagine che servono per dare informazioni ai visitatori riguardanti il sito, l’azienda o l’attività svolta e che non subiranno particolari modifiche nel tempo. Alcuni esempi sono la pagina chi siamo, quella con i contatti o la pagina contenente l’informativa sulla privacy.
Come abbiamo già detto in altri articoli, i Post Type di tipo Page non possono appartenere ad alcuna categorie e non è possibile assegnare loro dei tags. Pertanto non possono essere mostrati in un archivio come avviene con i Post Type di tipo Post.
Tuttavia possono avere una struttura di tipo gerarchica, ovvero ogni pagina può avere una pagina genitore e una o più pagine figlie.
I Page Template hanno una alto livello di specificità e possono essere creati per visualizzare una specifica pagina o un gruppo di pagine. Infatti, è possibile creare template il cui compito è quello di mostrare solo la pagina con un particolare ID o slug, o creare dei modelli personalizzati che possono essere selezionati per visualizzare il contenuto di un gruppo di pagine.
Ma cerchiamo di comprendere meglio quest’ultima affermazione e facciamolo consultando la gerarchia dei Template Files per le pagine.
Gerarchia dei tamplate files per le pagine in WordPress
Quando un visitatore accede ad una pagina qualsiasi del tuo sito, WordPress decide quale template usare per mostrare quella particolare pagina.
L’ordine con cui WordPress sceglie il template da eseguire è il seguente:
- Page Template — se alla pagina è stato assegnato un Custom Template, quest’ultimo avrà il compito di processare e mostrare la pagina.
- page-{slug}.php — se la pagina non è stata assegnata ad alcun Custam Template, WordPress cercherà il template che contiene lo slug della pagina.
- page-{id}.php — se neanche il template il cui nome ha lo slug della pagina è presente, cercherà quello con l’ID della pagina.
- page.php — se nessuno dei template appena visti è presente, allora WordPress userà quello di default per le pagine.
- singular.php — qualora nemmeno page.php fosse presente, sarà usato il template singular.php che, come abbiamo visto, può essere usato anche per mostrare il singolo articolo, cioè il Post Type di tipo Post.
- index.php — in fine, come abbiamo detto più volte, in assenza di template più specifici il compito di mostrare il contenuto è affidato a index.php.
Alcuni temi hanno dei template personalizzati, i Custom Page Template, da poter utilizzare per determinate pagine, che possono contenere funzionalità aggiuntive o una grafica personalizzata. Sarà l’utente che redige la pagina che deciderà quale modello dovrà essere usato per visualizzare la pagina.
L’utente potrà scegliere quale modello usare dal riquadro attributi della pagina in fese di editing.
Se invece vuoi personalizzare la grafica e la visualizzazione di una pagina specifica allora, piuttosto che creare un Custom Template, puoi creare un template personalizzato esclusivo per quella pagina.
Per farlo ti sarà sufficiente creare un file e chiamarlo page-{slug}.php o page-{id}.php. Naturalmente dovrai sostituire {slug} o {id} con lo slug della pagina o con il suo id.
Come creare un template diverso per ogni pagina WordPress
Vediamo ora come implementare i template per le pagine di WordPress.
Iniziamo vedendo una possibile implementazione del file page.php e lo facciamo prendendo come esempio il file del tema Twenty Fifteen.
<?php
/**
* The template for displaying pages
*
* This is the template that displays all pages by default.
* Please note that this is the WordPress construct of pages and that
* other "pages" on your WordPress site will use a different template.
*
* @package WordPress
* @subpackage Twenty_Fifteen
* @since Twenty Fifteen 1.0
*/get_header(); ?>
<div id="primary" class="content-area">
<main id="main" class="site-main" role="main">
<?php
// Start the loop.
while ( have_posts() ) :
the_post();
// Include the page content template.
get_template_part( 'content', 'page' );
// If comments are open or we have at least one comment, load up the comment template.
if ( comments_open() || get_comments_number() ) :
comments_template();
endif;
// End the loop.
endwhile;
?>
</main><!-- .site-main -->
</div><!-- .content-area -->
<?php get_footer(); ?>
Come puoi vedere il file non è molto diverso da single.php visto nel paragrafo precedente.
Allo stesso modo è possibile implementare sia page-{slug}.php che page-{id}.php. Mentre un discorso a parte sono i Custom Template.
Come abbiamo detto i Custom Template sono dei modelli che possono essere assegnati ad un gruppo di pagine. Sarà l’utente che di volta in volta deciderà a quale modello assegnare la pagina scegliendolo dal riquadro Attributi della Pagina.
Ma vediamo come creare un Custom Template.
Come creare un Custom Page Template
Innanzitutto è importante che il nome che assegni al Custom Template non inizi per page- altrimenti WordPress potrebbe confonderlo. Per lo stesso motivo il nome non deve essere simile ad altri Template files della gerarchia di WordPress.
Quindi il nome del file è lasciato alla libera scelta dello sviluppatore, ma con le limitazioni che abbiamo appena detto. Un esempio potrebbe essere, qualora il template dovesse mostrare la pagina per l’intera larghezza dello schermo, full-width-page.php.
A questo punto apri il file e come prima riga aggiungi un commento con il nome che vorrai dare al Template.
Ti consiglio di scrivere un nome che descrivi lo scopo del template. Per esempio nel caso in cui si volesse creare un template che occupi tutta la larghezza dello schermo, lo si potrebbe chiamare Full Width Page
<?php /* Template Name: Example Template */ ?>
Il resto del codice è simile al quello visto per page.php, ma naturalmente con una grafica e una layout differente.
Di default i Custom Template sono disponibili solo per le pagine. Tuttavia dalla versione 4.7 di WordPress è possibile creare dei modelli personalizzati anche per altri tipi di Post Type.
Per creare un Custom Template per specifici Post Type è sufficiente aggiungere una riga di commento, sotto il nome del modello, dove indicare quali Post Type deve supportare.
Per esempio:
<?php
/*
Template Name: Full-width layout
Template Post Type: post, page, event
*/// Page code here...
Conclusioni – Creare un template diverso per ogni pagina WordPress
In questo articolo abbiamo visto che è possibile creare un template diverso per ogni pagina o gruppo di pagine in WordPress. In questo modo potrai personalizzare la grafica e il layout per ognuna di esse e creare un sito originale e accattivante.
Se sei arrivato fin qui, nella lettura di questa guida, sei già a buon punto. Infatti il tuo tema inizia a prendere forma e pian piano che andrai avanti e seguendo i miei consigli vedrai che sarà sempre più completo.
Nei prossimi articoli continueremo ad analizzare i più importanti template files di un tema WordPress. Ti consiglio di seguirci e attendere le prossime pubblicazioni.
Nel frattempo, se vuoi farmi qualche domanda, chiedere informazioni o darmi qualche consiglio, puoi contattarmi tramite la nostra pagina Facebook o via email.
Prossimo articolo -> Attachment Template Files
Template files per Articoli <- Articolo precedente
Indice argomenti della guida
- Introduzione: Come creare un tema per WordPress
- Cos’è un tema WordPress
- I template files di WordPress
- Cosa sono i Post Type di WordPress
- Struttura e organizzazione dei file in un tema WordPress
- A cosa serve style.css e come installare un tema in WordPress
- I template tags di WordPress
- Come funziona il Loop di WordPress
- Functions.php – Aggiungere caratteristiche e funzionalità a WordPress
- Come aggiungere javascript e css in WordPress
- Categorie, Tags e Tassonomie
- Template files per Articoli
- Creare un template diverso per ogni pagina WordPress
- Attachment Template Files
- Creare Template Files per Custom Post Type WordPress
- Creare template files parziali in WordPress
- Template per le Tassonomie in WordPress