I temi di wordpress sono fatti in modo da essere personalizzati attraverso la creazione di un tema figlio.
Questo eredita tutti gli aspetti e tutte le funzionalità del genitore, ma ogni file inserito nella sua cartella ha la priorità sul genitore che viene così offuscato.
In questo modo è possibile intervenire sui fogli di stile e sul codice php senza danneggiare il genitore che può sempre essere aggiurnato senza perdere le modifiche che sono state introdotte.
Vediamo quali sono i passaggi per la creazione e l’installazione di un tema figlio, chiamato più propriamente child.
Creazione della cartella del tema child
I temi si trovano nella cartella wp-content/themes nella home del sito WP
1 |
# cd /var/www/sito_wp/wp-content/themes |
Una volta deciso qual’è il tema che vogliamo personalizzare, creiamo una cartella con lo stesso nome seguito dal suffisso -child. In questo esempio personalizziamo il tema twentysixteen
1 2 |
# mkdir twentysixteen-child # chown www-data:www-data twentysixteen-child |
Creiamo il file style.css che contiene le informazioni usate da WP per riconoscere il nuovo tema:
1 2 3 4 5 6 |
# cat > twentysixteen-child/style.css <<! /* Theme Name: Twenty Sixteen Child Template: twentysixteen */ ! |
Theme Name e Template sono indispensabili, soprattutto Template che è il nome della cartella del tema padre. Si possono aggiungere anche altri valori come mostra il contenuto dello stesso file del tema padre
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# head -15 twentysixteen/style.css /* Theme Name: Twenty Sixteen Theme URI: https://wordpress.org/themes/twentysixteen/ Author: the WordPress team Author URI: https://wordpress.org/ Description: Twenty Sixteen is a modernized take on an ever-popular WordPress layout — the horizontal masthead with an optional right sidebar that works perfectly for blogs and websites. It has custom color options with beautiful default color schemes, a harmonious fluid grid using a mobile-first approach, and impeccable polish in every detail. Twenty Sixteen will make your WordPress look beautiful everywhere. Version: 1.8 License: GNU General Public License v2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html Tags: one-column, two-columns, right-sidebar, accessibility-ready, custom-background, custom-colors, custom-header, custom-menu, editor-style, featured-images, flexible-header, microformats, post-formats, rtl-language-support, sticky-post, threaded-comments, translation-ready, blog Text Domain: twentysixteen This theme, like WordPress, is licensed under the GPL. Use it to make something cool, have fun, and share what you've learned with others. */ |
Ogni file contenuto nella cartella child sostituisce interamente l’omonimo contenuto nella cartella genitore e style.css non fa differenza. Volendo inserire solo delle aggiunte e delle variazioni, mantenendo lo stile degli elementi del tema padre, dobbiamo includerne il relativo style.css. Per farlo dobbiamo aggiungere alla cartella child il file functions.php contenente il codice che WP deve eseguire per includere il foglio di stile originale
1 2 3 4 5 6 7 |
# cat > twentysixteen-child/functions.php <<! <!--?php add_action( 'wp_enqueue_scripts', 'enqueue_parent_theme_style' ); function enqueue_parent_theme_style() { wp_enqueue_style( 'parent-style', get_template_directory_uri().'/style.css' ); } ! |
functions.php, a differenza di tutti gli altri file, non sostituisce quello del tema genitore, ma viene caricato prima dell’altro. Dentro questo file possiamo inserire tutte le funzioni e gli hook per personalizzare il nostro child eseguendo del codice php
Sistemiamo l’owner dei due file creati
1 |
# chown www-data:www-data twentysixteen-child/* |
Selezione del tema
E’ ora possibile installare il nuovo tema. Dal menù di amministrazione Aspetto->Temi scegliamo Twenty Sixteen Child che a differenza degli altri non mostra nessuna foto.
D’ora in poi tutte le modifiche introdotte nella cartella del nostro tema child saranno subito visibili. Sarà sempre possibile selezionare il tema originale, oppure tenere due temi child, uno di sviluppo ed uno di produzione.