Nella scorsa lezione siamo stati in grado di creare la prima pagina del nostro tema, pensavi che fosse finita qua?
Spero proprio di no perché sviluppare un tema WordPress è un’attività molto divertente, se sappiamo dove mettere le mani…
Scopriamo intanto come sia possibile creare la testata del nostro tema, che ne dici?
Oltre che seguire la logica WordPress che ci invita a spezzettare il nostro codice in più parti, quello che voglio fare all’interno di queste lezioni è seguire il percorso che applichiamo in azienda quando creiamo un sito web.
Dopo aver definito gli elementi principali del sito passiamo a costruirlo dall’alto verso il basso, almeno questo è l’approccio con il quale sono più confidente.
Non ho preparato una grafica da seguire, anche perché in fin dei conti questa avrebbe aggiunto degli elementi di disturbo che avrebbero distolto la nostra attenzione dai concetti di PHP e dalle funzionalità WordPress che andremo a scoprire; allo stesso tempo non voglio assolutamente lasciarti a bocca asciutta e analizzeremo assieme alcuni dei componenti principali della costruzione di un template comune allo sviluppo web.
Quindi iniziamo a farci una delle domande più classiche del web: da cosa è composto un sito web?
In questa lezione non ci interessano tutti gli elementi, ma soltanto quelli relativi alla testata che generalmente sono rappresentati da un logo, il motto del nostro sito e un menu.
A questi potrebbero aggiungersi molti altri elementi, ma ti assicuro che già inserire questi non sarà un compito molto naturale.
Abbiamo già aggiunto cose del genere nel file index.php
, ma come abbiamo anche discusso in precedenza questo documento porta con se 2 grandi errori:
- non contiene codice PHP
- non rispecchia la logica gerarchica di WordPress
Sono consapevole del fatto che questi errori te li ho fatti fare io, ma avevo la necessità di farlo nella lezione precedente, ora che abbiamo una lezione dedicata possiamo focalizzarci nella creazione della testata del nostro tema.
Crea la tua testata all’interno di header.php
Che WordPress rispetta una determinata gerarchia dovrebbe essere ormai un dato di fatto, in fin dei conti te l’ho ricordato anche poco fa…
La prima cosa che voglio fare in questa sezione è rassicurarti, se non hai ancora capito bene come funziona la gerarchia di un tema WordPress è tutto molto normale visto che sono stato io a non spendere molto tempo nel farlo.
Affronteremo tutto in una lezione dedicata quando avremo creato assieme le pagine principali di questo progetto in modo da aver sviluppato un punto di partenza ben definito.
Intanto, per garantirci la modularità richiesta dalla nostra piattaforma, tutto quello che dobbiamo fare è creare il file header.php
. Come ci ricorda il suo stesso nome, al suo interno inseriremo tutto il codice necessario per creare la testata del nostro tema.
Iniziamo quindi con il caricare lo scheletro del nostro documento andando a inserire quanto segue:
<?php /** * La testata del nostro tema. * * @package skAM */ ?> <!DOCTYPE html> <html <?php language_attributes(); ?>> <head> <meta charset="<?php bloginfo( 'charset' ); ?>"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="pingback" href="<?php bloginfo( 'pingback_url' ); ?>"> <?php wp_head(); ?> </head> <body <?php body_class(); ?>>
Questo è un primo blocco di codice che rappresenta soltanto una porzione di quello che sarà il nostro file definitivo ma preferisco presentartelo pezzo per pezzo perché già in questa prima sezione ci sono moltissime cose che dobbiamo conoscere.
Iniziamo dalle prime righe di codice che rappresentano un commento multilinea in PHP.
Questi commenti non sono essenziali al corretto funzionamento di WordPress ma servono, come spesso accade, ad aiutare gli sviluppatori che arriveranno a mettere mano al codice che stiamo sviluppando.
Da una prima occhiata dovresti capire da solo che i file del tema saranno un mix di codice HTML5 e di codice PHP ma non per questo ti dovresti spaventare perché come abbiamo scoperto nel corso dedicato a questo linguaggio questa risulta essere una pratica molto comune nello sviluppo web.
Sotto ai commenti, precisamente dal rigo 8, inizia il vero codice che andrà a comporre la pagina.
Il tag <!DOCTYPE html>
non dovrebbe assolutamente scandalizzarti perché è la classica apertura di una pagina HTML5 mentre già al rigo successivo trovi qualcosa di veramente interessante perché vedi l’elemento radice <html>
che viene arricchito dalla funzione WordPress language_attributes()
che andrà a inserire tutti gli attributi HTML necessari per ottenere le informazioni dedicate direttamente dal nostro database.
Queste informazioni permettono di dichiarare la lingua, la sua direzione e altre utili informazioni per il nostro browser.
Ma non soffermiamoci troppo su questo aspetto perché ci sono molte altre informazioni che voglio presentarti e che interessano ancora di più il nostro sito web agli occhi del browser.
Per esempio, al rigo 11 viene definito il charset della nostra pagina che, anche in questo caso, WordPress va a prendere queste informazioni direttamente dal database.
Proprio discutendo questo elemento andiamo a scoprire una funzione molto interessante che WordPress mette a disposizione, la funzione bloginfo()
che ci permette di ottenere moltissime informazioni riguardanti la configurazione della nostra piattaforma.
In questo caso grazie al parametro charset
possiamo ottenere questo tipo di informazione che permette al browser di visualizzare correttamente i caratteri utilizzati all’interno del nostro sito web ma sbirciando nel Codex puoi scoprire che questa funzione è incredibilmente utile.
Infatti già al rigo 14 con il parametro pingback_url
ci permette di inserire automaticamente il link che resterà in ascolto per questo tipo di eventi.
Abbiamo saltato due righe perché contenevano soltanto del codice HTML abbastanza standard per quanto riguarda la creazione di pagine web.
La prima è un tag <meta>
grazie al quale dichiariamo il viewport
della nostra pagina aiutando a mostrare correttamente il contenuto quando visualizzato da dispositivi mobile.
Siamo partiti dalla descrizione delle singole righe e se conosci bene il codice HTML ti sarai accorto che manca un tag fondamentale nella creazione di queste pagine, un tag che viene usato moltissimo dai motori di ricerca per comprendere le informazioni contenute nella pagina.
Se non te ne sei accorto da solo, il tag mancante è <title>
.
Prima questo tag veniva inserito all’interno del file header.php
, ma come ogni buona applicazione anche WordPress viene modificato negli anni e buone pratiche prendono piede definendo nuovi standard.
Tra questi è nata la possibilità far gestire il tag <title>
direttamente da WordPress, in questo modo i creatori di temi e soprattutto gli utenti finali non possono utilizzare un codice obsoleto che in alcuni casi, come per il plugin Yoast SEO, rendono impossibile il corretto funzionamento e la possibilità di applicare le dovute modifiche.
Per inserire queste informazioni WordPress farà affidamento alla funzione wp_head()
che tra l’altro rappresenta il punto di esecuzione di tutte le funzioni agganciate all’omonimo Hook.
Per fare questo dobbiamo andare a modificare il file functions.php
che ti ho presentato nella lezione precedente.
Però prima di spostare la nostra attenzione su questo file, visto che dovremo svolgere anche altre attività, volevo farti analizzare un’altra fantastica funzione che questa piattaforma ci mette a disposizione; la funzione body_class()
che genera in automatico l’attributo class
e lo popolerà con comodissime classi che ci permetteranno di distinguere le varie pagine.
Facciamo un veloce esempio per capire come si comporta. Se visualizzi la homepage di skillsAndMore troverai il tag <body>
che contiene l’attributo class
popolato in questo modo:
<body class="home blog header-image full-width-content">
Mentre visualizzando la pagina del singolo corso le classi di questo elemento sono completamente diverse:
<body class="single single-sfwd-courses postid-42 logged-in admin-bar no-customize-support pmpro-body-has-access header-image full-width-content">
Ci tengo a farti capire che queste modifiche sono applicate automaticamente grazie alla funzione body_class()
che, conoscendo la pagina che è stata generata, è in grado di fornirci una collezione di classi utili al nostro scopo.
La mia vita da sviluppatore WordPress si è incredibilmente semplificata da quando ho conosciuto questa funzione perché mi permette di conoscere con un singolo selettore CSS quale sia la pagina visualizzata e di personalizzarla all’interno del mio foglio di stile.
Dato che la funzionalità di body_class()
è abbastanza semplice ti lascio la pagina del Codex dove viene descritta più nel dettaglio perché adesso è giunto il momento di capire che cosa aggiungere all’interno di functions.php
per rendere la nostra testata ancora più dinamica.
Modifica functions.php
per popolare header.php
Con questo titolo ho voluto mettere in luce una caratteristica della programmazione PHP, in questo caso applicata a WordPress, che potrebbe confondere un po’ le idee.
In fin dei conti perché dovrei modificare un file specifico per modificarne un altro?!?
Ebbene questo è dovuto alla possibilità di includere delle caratteristiche dichiarate in un file in molti altri file presenti all’interno del nostro progetto.
Anche se analizzeremo quanto ti sto per dire più nel dettaglio in una successiva lezione, header.php
non è l’unico file che puoi usare per creare la testata del tuo template!
Ricordati sempre che WordPress è una piattaforma molto modulare e che è in grado di gestire un gran numero di pagine distinte.
Per il momento stiamo creando la sua homepage, ma come abbiamo già detto sarà possibile personalizzare pagine archivio, singoli articoli, pagine di errore e molte altre.
A seconda del tema che svilupperai potrai anche creare testate differenti in modo da personalizzare ulteriormente l’esperienza dei tuoi utenti.
Forse sono partito per la tangente e ho messo sul fuoco molta più carne di quella che siamo in grado di gestire, nessun problema avremo altre lezioni per approfondire gli argomenti presentati.
Adesso è giunto il momento di capire come sia possibile modificare il file functions.php
in modo da popolare la testata nel modo corretto.
Abbiamo detto che il tag <title>
non può essere inserito direttamente all’interno di header.php
giusto? Ebbene scopriamo come aggiungerlo con il seguente codice:
add_action( 'after_setup_theme', 'skam_setup' ); if( !function_exists( 'skam_setup') ){ function skam_setup(){ add_theme_support( 'title-tag' ); } }
Sono sicuro che stai pensando qualcosa come: eddai Andrea, tutto questo mare di parole per aggiungere una singola riga di codice?
Ti confesso in tutta onestà che questa singola riga di codice aggiunta alla funzione sam_setup()
porta con se un mare di novità e ti presenta una funzione che verrà utilizzata più e più volte all’interno del file functions.php
.
Grazie infatti alla funzione add_theme_support()
siamo in grado di specificare alcune caratteristiche per il tema che stiamo sviluppando, infatti il parametro title-tag
è soltanto uno di quelli che possiamo utilizzare con questa funzione e che ci permette di attivare delle funzionalità specifiche per il nostro tema.
Altri parametri interessanti sono quelli che permettono di aggiungere il supporto alle immagini in evidenza, quelli che permettono di attivare il supporto alle strutture HTML5, quelli che aggiungono funzionalità avanzate come la possibilità di personalizzare il colore di sfondo o l’immagine della testata e molte altre caratteristiche che vengono elencate nella pagina dedicata del Codex.
Torneremo sicuramente a usare questa funzione e il file functions.php
nelle restanti lezioni di questo corso ma una cosa che dobbiamo assolutamente fare è mettere a disposizione i link di registrazione ai feed RSS che permettono di far capire ai programmi dedicati, generalmente chiamati reader, di abbonarsi al nostro blog e di recuperare automaticamente gli ultimi articoli pubblicati.
Aggiungere questa caratteristica è molto semplice e lo facciamo sempre utilizzando la funzione add_theme_support()
ma con un parametro diverso:
add_theme_support( 'automatic-feed-links' );
In questo esempio ho inserito una singola riga di codice ma tu ricordati che dovrà essere comunque inserita all’interno della funzione skam_setup()
che viene eseguita con il corretto Hook, altrimenti le funzionalità di questa funzione non verranno inserite nel tema che stai sviluppando.
Una testata non sarebbe niente senza un logo
Ebbene adesso che abbiamo aggiunto alla nostra testata alcuni elementi fondamentali, tutti appartenenti comunque al tag <head>
della pagina HTML, è giunto il momento di popolare anche il <body>
delle nostre pagine aggiungendo gli elementi essenziali di una testata.
In questa prima sezione scopriremo un’interessante caratteristica introdotta in WordPress 4.5 che permette di caricare il logo della testata con il Customizer, mentre nella successiva scopriremo come dichiarare il nostro menu e popolarlo grazie agli strumenti messi a disposizione della bacheca della piattaforma.
Prima di modificare il codice all’interno di index.php
dobbiamo continuare a popolare la funzione skam_setup()
all’interno della quale dobbiamo aggiungere il supporto a questa nuova funzionalità. Questa dichiarazione può avvenire in modo molto semplice, con una sola riga di codice:
add_theme_support('custom-logo');
Allo stesso tempo stiamo lavorando con delle immagini che devono essere inserite nella testata del nostro tema, vogliamo impedire che il nostro utente carichi per errore immagini troppo grandi andando così a rompere la nostra struttura, giusto?
Ebbene WordPress ha pensato anche a questo e ci ha permesso di utilizzare una caratteristica che viene usata molto spesso all’interno di questo CMS e che serve a indicare delle misure standard che verranno gestite con gli strumenti di questa piattaforma.
add_theme_support('custom-logo', array( 'width' => 300, 'height' => 60, 'flex-width' => true ));
Al momento non è mio interesse indagare nel dettaglio di questa funzione e della sua sintassi, adesso il nostro focus è dedicato alla gestione del logo del nostro tema. Se vuoi approfondire questo concetto puoi consultare tranquillamente la pagina del Codex, io non me la prendo a male 😉
Quello sul quale adesso voglio far focalizzare la tua attenzione è come integrare questa nuova funzionalità all’interno del file header.php
. Infatti, se torni a controllare la porzione di file che abbiamo pubblicato poco fa, manca completamente la parte relativa alla testata della nostra pagina che viene creata all’interno dell’elemento <body>
.
Cerchiamo quindi di fare qualche aggiunta con il seguente blocco di codice:
<div id="page" class="site"> <header id="masthead" class="site-header" role="banner"> <div class="site-branding"> <h1 class="site-title"><a>" rel="home"></a></h1> </div><!-- .site-branding --> </header> </div>
Immagino già cosa tu stia pensando: ecco un altro muro di codice.
Lo so, lo riconosco ma allo stesso tempo non posso farci niente perché presentandoti il codice in questo modo sono in grado di discutere con te la sezione che stiamo sviluppando.
Figuriamoci se ti faccio notare che con questo blocco non arriviamo neanche alla chiusura del tag <header>
🙂
Però c’è da dire che riuscire a vedere assieme questi blocchi di codice aiuta moltissimo per quanto riguarda la creazione del tuo tema. Guardiamo per un attimo con attenzione il div
con classe .site-branding
, hai già scoperto che cosa accade al suo interno?
Quello che stiamo facendo è utilizzare la funzione the_custom_logo()
per la quale abbiamo dichiarato il supporto nel blocco di codice precedente all’interno del file functions.php
, niente di complicato ma semplicemente il corretto uso delle funzioni che WordPress ci mette a disposizione per sfruttare i suoi componenti.
Cosa succede però se il nostro cliente o noi non abbiamo ancora caricato un logo adeguato? Non si vedrebbe assolutamente niente!
Sono sicuro che vuoi evitare il più possibile l’avverarsi di una situazione del genere, non è vero?
Per questo motivo qualche rigo sotto ti ho inserito il controllo if( !has_custom_logo() ):
che ci permette di chiedere a WordPress se ha trovato un logo caricato all’interno della sua configurazione. Dato che stiamo utilizzando il carattere speciale !
che trasforma il valore di verità nel suo opposto, nel caso in cui WordPress risponda true
(vero) questo verrà tramutato in false
e il seguente blocco di codice non verrà mostrato.
Viceversa, ovvero se WordPress non trova un logo caricato, risponderà con false
che una volta invertito in true
andrà a eseguire il blocco di codice contenuto all’interno del if
.
Adesso che abbiamo scoperto come integrare il logo caricato con il Customizer, o come mostrare un testo sostitutivo, voglio descriverti velocemente le due funzioni che vengono utilizzate all’interno del nostro <h1>
:
home_url( '/' )
– per essere preciso qua sono addirittura due funzioni dove la prima serve a disinfettare (sanitize) la URL passata come parametro che in questo caso viene creata dalla seconda funzione che serve appunto a conoscere la URL del sito sul quale viene lanciata;bloginfo( 'name' )
– abbiamo già incontrato precedentemente questa funzione ma utilizzata con il parametroname
ci serve a ottenere il nome del sito sul quale viene richiamata e che può essere modificato all’interno del backend di WordPress.
Queste sono le caratteristiche principali per il titolo che verrà mostrato soltanto se WordPress non è in grado di trovare alcun logo.
Diversi anni fa per caricare questo tipo di elemento avremmo dovuto fare i salti mortali, ma oggi abbiamo degli strumenti integrati nella nostra piattaforma che ci facilitano moltissimo la vita!
La parte conclusiva del blocco di codice è quella che ci permette di ottenere il motto del nostro sito, anch’esso salvato all’interno delle impostazioni durante le fasi di installazione della piattaforma e modificabile all’interno del suo backend.
A parte l’uso della funzione get_bloginfo()
che ci permette di salvare all’interno di una variabile il valore ottenuto con il parametro description
, c’è un’altra funzione che viene utilizzata all’interno del nostro if
e ci permette di conoscere una cosa molto particolare; l’hai già notata?
A volte ci sono eccezioni
Ben presto scoprirai che all’interno di WordPress esistono diverse funzioni che hanno nomi simili ma che si distinguono per la parte iniziale che può essere un the_
oppure con un get_
. La funzione bloginfo()
è una strana eccezione a questa regola ma praticamente tutte quelle che iniziano con the_
stampano nella pagina il valore restituito mentre con get_
lo restituiscono nel modo più classico e ci permettono di inserirlo all’interno di una variabile o di utilizzarlo come parametro di una funzione.
La funzione che ti annunciavo precedentemente è is_customize_preview()
e ci permette di chiedere al nostro WordPress se il nostro tema è attualmente visualizzato attraverso la preview del Customizer, in questo modo potremmo conoscere questa caratteristica che come vedremo nella lezione conclusiva del corso può essere molto interessante per far aggiornare dal vivo le modifiche fatte con l’uso di questo strumento.
Senza la navigazione un sito non è consultabile
Giungiamo alla penultima sezione di questa lezione, riconosco che questa è stata piena di nuovi concetti e di informazioni che dovrai assimilare, ma in fin dei conti questo è il percorso che devi affrontare se vuoi diventare un bravo sviluppatore di temi WordPress.
Veniamo però all’argomento principale di questa sezione e affrontiamo da vicino l’argomento navigazione.
Se conosci bene l’HTML5 potrai pensare che per creare questo elemento avrai semplicemente bisogno di inserire all’interno della testata un elemento <nav>
con una lista non ordinata popolata da qualche link; e se stessimo parlando di creare un sito statico non ci sarebbe alcun problema con questa soluzione.
Ma quello che stiamo facendo è creare un tema WordPress che permetta al nostro cliente, o anche a noi stessi, di personalizzarlo attraverso gli strumenti che ci vengono messi a disposizione; e quando si parla di questo CMS esiste una semplicissima interfaccia che possiamo utilizzare per inserire qualsiasi tipo di link.

Come puoi notare tu stesso, all’interno del backend di questa piattaforma troviamo lo strumento sopra citato che si trova in Aspetto -> Menu e che ci offre la possibilità di poter personalizzare i menu con delle voci che possiamo selezionare e spostare attraverso l’interfaccia Drag’n Drop che troviamo alla destra.
Ancora non si vede niente vero?
Se provi a visualizzare adesso questa voce nella tua installazione WordPress questa non si vedrà perché non abbiamo ancora dichiarato l’esistenza di questo elemento.
Non è mia intenzione descriverti nel dettaglio il funzionamento di questa caratteristica perché mi aspetto che tu lo conosca molto bene, cosa che probabilmente non conosci è come WordPress gestisce questo tipo di elementi.
Un po’ come succede per le sidebar e le varie widget area, argomenti che comunque approfondiremo nella prossima lezione, anche quando si parla di menu il nostro CMS preferito ha bisogno di conoscere la posizione dove questo verrà mostrato.
Ovviamente la posizione potrà essere richiamata attraverso il codice in qualsiasi punto del nostro tema (testata, sidebar o footer che sia), ma prima di fare questo abbiamo bisogno di aprire nuovamente il file functions.php
e registrare questa nuova area per il menu:
register_nav_menus( array( 'primary' => __( 'Principale', 'skam' ), ) );
La funzione register_nav_menus()
dovrà essere dichiarata all’interno di skam_setup()
perché anche questa dovrà essere eseguita quando l’Hook after_setup_theme
che viene richiamato dal nostro WordPress e funziona in modo molto semplice.
Come puoi notare tu stesso, anche questa accetta un array associativo di configurazione dove la chiave dell’array primary
andrà a identificare il menu mentre il valore a essa associato servirà a fornire un nome per il menu all’interno del backend che ti ho mostrato precedentemente.
In questo momento non abbiamo fatto altro che dire a WordPress che vogliamo creare una nuova area per il menu all’interno del nostro tema e nonostante che ci metterà a disposizione gli strumenti per popolarlo, non saprà assolutamente dove mostrarlo.
È giunto il momento di scoprire il codice da inserire all’interno del nostro header.php
proprio sotto alla chiusura del div con classe .site-branding
che ci permetterà di mostrare il menu:
<header> ... <nav id="site-navigation" class="main-navigation" role="navigation"> <button class="menu-toggle" aria-controls="primary-menu" aria-expanded="false"><?php esc_html_e( 'Primary Menu', 'skam' ); ?></button> <?php wp_nav_menu( array( 'theme_location' => 'primary', 'menu_id' => 'primary-menu' ) ); ?> </nav><!-- #site-navigation --> </header><!-- #masthead --> <div id="content" class="site-content">
Onestamente ho sfruttato l’occasione per inserire anche la chiusura dell’elemento <header>
e l’apertura del div con ID #content
all’interno del quale andremo a inserire sia la colonna principale che quella secondaria appartenente al nostro tema, ma questo è un argomento a parte.
Quello che ci interessa in questo momento è quella riga di codice PHP inserita all’interno dell’elemento <nav>
.
Evitiamo di analizzare l’elemento <button>
perché come scoprirai dal CSS e dal JavaScript contenuti nel repository di questo corso, è un elemento che verrà mostrato soltanto sui dispositivi mobile per accomodare al meglio il nostro menu alle risoluzioni più basse.
Quella che ci interessa veramente in questo contesto è la funzione wp_nav_menu()
che ci consente di richiamare il menu precedentemente registrato, andiamo ad analizzarla da vicino:
wp_nav_menu( array( 'theme_location' => 'primary', 'menu_id' => 'primary-menu' ) );
Come puoi scoprire sulla pagina del Codex dedicata alla funzione wp_nav_menu()
questa ha moltissimi parametri che possono essere passati all’interno dell’array, ma nel nostro caso ce ne servono soltanto due:
- grazie al valore identificato con la chiave
theme_location
diciamo a WordPress quale menu stiamo cercando, basta specificare il valore di questa chiave con il nome della chiave utilizzato all’interno della funzioneregister_nav_menus()
e saremo in grado di richiamare automaticamente tutti i link che abbiamo inserito con gli strumenti Drag’n Drop offerti dalla piattaforma; - la seconda chiave utilizzata,
menu_id
, serve semplicemente a specificare l’ID che ci aiuterà a personalizzare il menu attraverso i CSS.
Fatte queste due operazioni non dovremo più preoccuparci di niente! Il nostro WordPress sarà in grado di generare al posto nostro tutto il codice HTML necessario a generare il menu. Spero che tu possa notare adesso la potenza di questa piattaforma perché quanto abbiamo visto fino a ora non è altro che la punta dell’iceberg per quanto riguarda le funzionalità che possiamo delegare nella creazione delle nostre pagine HTML.
Conclusioni
Siamo finalmente giunti alla conclusione di questa lezione, ma non posso ancora lasciarti andare perché se provi ad aggiornare la pagina del tuo nuovo tema noterai che niente è cambiato!
Da un certo punto di vista questo è più che ragionevole perché in fin dei conti non abbiamo assolutamente modificato il codice che compone il file index.php
e nonostante tutto il lavoro che abbiamo svolto WordPress non è ancora in grado di caricare le modifiche che abbiamo apportato al file header.php
perché non gli abbiamo mai detto di farlo.
Tutto quello che dovremo fare è sostituire il codice che rappresenta la testata del nostro tema all’interno di index.php
con la funzione get_header()
. Con questa singola funzione stai dicendo a WordPress di prendere tutto il codice contenuto all’interno del file header.php
e di integrarlo all’interno della pagina nella quale stai richiamando la funzione stessa.
Devi essere molto contento di te stesso perché in fin dei conti con questa prima lezione hai già fatto passi da gigante all’interno dello sviluppo di temi WordPress e con le prossime che ti attendono ti posso assicurare che sarai tra i pochi fortunati che hanno imparato a creare dei temi WordPress da zero senza doversi affidare a strumenti punta-e-clicca o ad altre “baggianate” che non fanno altro che sporcare il tuo codice.