Creare un tema WordPress personalizzato con Gutenberg
Una guida per realizzare temi scalabili e orientati ai blocchi

WordPress è uno degli strumenti più versatili per la creazione di siti web. Da quando Gutenberg è entrato a far parte del core, l’intera logica di costruzione delle pagine si è trasformata, rendendo la struttura dei contenuti più modulare e la gestione del design più flessibile. L’obiettivo di questa guida è mostrare come sviluppare un tema personalizzato orientato ai blocchi, con l’integrazione di Tailwind CSS per rendere il codice ancora più pulito e scalabile.
Perché Gutenberg?
Gutenberg mette a disposizione un sistema di blocchi che ti permette di:
- Modularizzare i contenuti: ogni blocco è un’entità a sé stante con il suo stile e le sue funzionalità.
- Personalizzare l’esperienza utente: è possibile creare blocchi custom, pattern predefiniti e aree di contenuto “modello” pronte all’uso.
- Migliorare le performance: Gutenberg si integra nativamente con gli standard più moderni di WordPress, riducendo le dipendenze esterne e ottimizzando il caricamento delle pagine.
Nota: Con i blocchi, puoi progettare layout avanzati senza ricorrere a troppi plugin, minimizzando i problemi di compatibilità.
La mia metodologia
Nel mio flusso di lavoro, utilizzo un approccio incentrato sulla “modularità” e sull’uso efficiente di Tailwind. Di seguito, trovi i punti chiave del processo.
- Struttura del tema Organizzo i file principali del tema:
functions.php: file dove dichiaro funzioni e hook personalizzati.style.css: contiene le informazioni di base del tema (nome, autore, versione, ecc.).index.php,header.php,footer.php,archive.php,single.php, ecc.: template standard di WordPress per la gestione delle varie sezioni del sito.theme.json(per i block theme o per personalizzare Gutenberg): definisce colori, font e stili globali che Gutenberg deve riconoscere.
Esempio di intestazione di style.css:/*!
Theme Name: NomeDelTema
Theme URI: https://esempio.com/
Author: Giuseppe
Author URI: https://esempio.com/
Version: 1.0
Text Domain: nome-del-tema
*/- Supporto ai blocchi e ai pattern
- Abilita le feature di Gutenberg: uso le funzioni
add_theme_support('editor-styles'),add_theme_support('wp-block-styles'), e altre specifiche per la tipologia di contenuti e stili desiderati. - Block Patterns: registro pattern personalizzati che consentono di creare blocchi predefiniti riutilizzabili. Ad esempio:
// functions.php
function nome_del_tema_register_block_patterns() {
if ( function_exists( 'register_block_pattern' ) ) {
register_block_pattern(
'nome-del-tema/pattern-testimonianze',
array(
'title' => __( 'Testimonianze', 'nome-del-tema' ),
'description' => _x( 'Sezione testimonianze con layout personalizzato', 'Block pattern description', 'nome-del-tema' ),
'content' => "<!-- wp:paragraph --><p>Testo testimonianza</p><!-- /wp:paragraph -->",
)
);
}
}
add_action( 'init', 'nome_del_tema_register_block_patterns' );In questo modo, ogni volta che crei un contenuto, puoi inserire pattern pronti all’uso, risparmiando tempo e mantenendo un design uniforme.
- Styling: integrazione con Tailwind Utilizzare Tailwind all’interno di un tema WordPress ti garantisce la possibilità di scrivere codice CSS estremamente modulare. Ecco la procedura che utilizzo più spesso:
- Installa Tailwind:
npm install -D tailwindcss postcss autoprefixer
npx tailwindcss init -p- Configura
tailwind.config.js: definisci percorsi, estensioni dei file e personalizzazioni varie (colori, spaziature, breakpoint). - Integra con i template: tailwind deve processare i file
.phpe i file.jso.jsxse stai usando React (ad es. per blocchi custom). - Enqueue in WordPress: nel file
functions.php, fai il “enqueue” del CSS generato:
function nome_del_tema_enqueue_styles() {
// Stile principale generato da Tailwind
wp_enqueue_style(
'nome-del-tema-tailwind',
get_template_directory_uri() . '/dist/css/tailwind.css', // percorso del file compilato
array(),
'1.0'
);
}
add_action('wp_enqueue_scripts', 'nome_del_tema_enqueue_styles');- Ottimizzazione: grazie all’approccio “utility-first” di Tailwind, eviti righe di CSS duplicate. Inoltre, con la modalità
purge(ocontentnelle versioni più recenti), i CSS inutilizzati vengono eliminati, migliorando le performance.
Applicazioni pratiche Questo approccio mi ha permesso di creare soluzioni adatte anche per portali turistici e siti per enti pubblici, dove i contenuti devono essere gestiti da più persone e devono rispettare linee guida di design (brand identity, palette specifiche, ecc.).
Bonus: Sfruttare i block style per definire varianti di uno stesso blocco. Questo evita di duplicare funzionalità, mantenendo la struttura dei contenuti più pulita.
Grazie per aver letto questo articolo