Quando si crea contenuto in WordPress, di solito si utilizza l’editor Gutenberg.
È stato introdotto con WordPress 5.0 (dicembre 2018) e ha sostituito il vecchio editor di testo TinyMCE.
TinyMCE era un editor semplice dell’era del Web 1.0 — un campo <textarea> con pulsanti come “grassetto”, “corsivo” e “link”.
Tutto il testo veniva salvato come un unico flusso di codice HTML, rendendo difficile spostare blocchi o inserire qualcosa nel mezzo.
Inoltre, TinyMCE non supportava la griglia adattiva a 12 colonne, diventata lo standard de facto durante l’era del Web 2.0.
Per questo motivo, i layout complessi dovevano essere costruiti manualmente con HTML e CSS.
- Gutenberg — un editor di nuova generazione
- Come Gutenberg gestisce la griglia
- Il problema del blocco codice standard
- Cos’è Prism.js
- Lavorare con un tema figlio
- Come usare il sito Prism.js
- Collegare Prism.js a WordPress
- Numerazione automatica delle righe
- Escape dei caratteri HTML
- Stili per i blocchi di codice
- Funzionalità aggiuntive di Prism.js
- Prima e dopo Prism.js
Gutenberg — un editor di nuova generazione
L’editor Gutenberg ha risolto questi problemi.
Ora ogni parte della pagina esiste come blocco — titolo, paragrafo, citazione, immagine, tabella o frammento di codice —
rendendo l’editing molto più semplice e le pagine flessibili e reattive.
Il contenuto deve essere leggibile su qualsiasi dispositivo, dallo smartphone ai grandi monitor.
Quando un sito non è reattivo, il testo “si sposta”, le immagini vengono tagliate e le tabelle escono dal contenitore.
Questo viene risolto grazie a un layout adattivo, che si adatta automaticamente alle dimensioni dello schermo.
Alla base di questo layout c’è una griglia a 12 colonne, resa popolare da framework come Bootstrap e Foundation.
La larghezza del contenitore viene divisa in 12 parti uguali (8,33% ciascuna), permettendo di creare praticamente qualsiasi tipo di composizione.
Esempio:
1 colonna → [████████████] 100%
2 colonne → [██████][██████] 6/6
3 colonne → [████][████][████] 4/4/4
4 colonne → [███][███][███][███] 3/3/3/3
Sui dispositivi mobili, le colonne si dispongono automaticamente in verticale,
mantenendo il contenuto leggibile e ben ordinato.
Come Gutenberg gestisce la griglia
In Gutenberg, la griglia a 12 colonne è implementata tramite il blocco Colonne,
che adatta automaticamente la disposizione degli elementi in base alla larghezza dello schermo.
In HTML, si tratta di contenitori con le classi wp-block-columns e wp-block-column,
mentre in CSS viene utilizzato Flexbox, che gestisce l’allineamento e il comportamento delle colonne.
Esempio:
<div class="wp-block-columns">
<div class="wp-block-column">
<p>Prima colonna</p>
</div>
<div class="wp-block-column">
<p>Seconda colonna</p>
</div>
</div>
CSS:
.wp-block-columns {
display: flex;
flex-wrap: wrap;
gap: 2em;
}
.wp-block-column {
flex-grow: 1;
flex-basis: 0;
}
@media (max-width: 600px) {
.wp-block-columns {
flex-direction: column;
}
}
Questa struttura rende Gutenberg flessibile e garantisce un design coerente su tutti i dispositivi.
Il problema del blocco codice standard
Tra tutti i blocchi di Gutenberg, il blocco Codice merita un’attenzione particolare.
Serve per mostrare esempi di programmi, script o configurazioni.
Tecnicamente, è un semplice contenitore HTML:
<pre> ... </pre>
Gutenberg e TinyMCE lo visualizzano allo stesso modo — come testo in font monospaziato
(di solito Consolas, Courier New o Monaco)
senza evidenziazione della sintassi o numerazione delle righe.
Va bene per l’uso base, ma negli articoli tecnici o nei tutorial il codice senza colori è difficile da leggere.
La soluzione più semplice è utilizzare Prism.js.
Cos’è Prism.js
Prism.js è una libreria JavaScript leggera per l’evidenziazione della sintassi direttamente nel browser.
Non richiede moduli lato server: lo script analizza il contenuto delle etichette <pre><code>...</code></pre>
e il file di stile prism.css colora parole chiave, stringhe, numeri e commenti.
Supporta decine di linguaggi di programmazione — da HTML e JavaScript a Python e Go —
e offre numerosi plugin: numerazione delle righe, pulsante di copia, nome del linguaggio, temi chiaro e scuro, ecc.
Esempio:
<pre><code class="language-js">
function hello(name) {
return `Hello, ${name}!`;
}
</code></pre>
Dopo aver aggiunto Prism.js, il codice verrà evidenziato automaticamente nel browser.
Lavorare con un tema figlio
Prima di aggiungere Prism.js, è importante non modificare direttamente il tema principale.
Tutte le personalizzazioni in WordPress devono essere fatte tramite un tema figlio.
Un tema WordPress controlla l’aspetto del sito — modelli, stili, menu, intestazioni e piè di pagina.
Se si modifica il tema attivo, il prossimo aggiornamento eliminerà le modifiche.
Un tema figlio evita questo problema: eredita dal tema principale ma conserva le personalizzazioni separatamente,
proteggendo il codice durante gli aggiornamenti.
Crea una cartella:
/wp-content/themes/il-mio-tema-figlio/
Aggiungi un file style.css:
/*
Theme Name: Il mio tema figlio
Template: il-mio-tema
Version: 1.0
*/
Il campo Template deve corrispondere al nome della cartella del tema principale.
Poi crea functions.php:
<?php
add_action('wp_enqueue_scripts', 'child_enqueue_styles');
function child_enqueue_styles() {
wp_enqueue_style('parent-style', get_template_directory_uri() . '/style.css');
wp_enqueue_style('child-style',
get_stylesheet_directory_uri() . '/style.css',
array('parent-style')
);
}
Attiva il tema figlio in Aspetto → Temi
e lavora all’interno di esso per aggiungere le modifiche.
Come usare il sito Prism.js
Una volta pronto il tema figlio, visita il sito ufficiale di Prism.js:
👉 https://prismjs.com
Apri la scheda Download per creare la tua versione personalizzata della libreria.
Configurazione consigliata
- Compression level:
Minified - Languages: HTML, CSS, JavaScript, PHP, Python, JSON
- Plugins:
- Line Numbers
- Toolbar
- Copy to Clipboard Button
- (opzionale) Show Language
- (opzionale) Highlight Lines
Scarica:
- DOWNLOAD JS →
prism.js - DOWNLOAD CSS →
prism.css
Posiziona entrambi i file nella cartella del tema figlio:
/wp-content/themes/il-mio-tema-figlio/
Collegare Prism.js a WordPress
Apri functions.php e aggiungi:
add_action('wp_enqueue_scripts', 'theme_enqueue_prism_assets');
function theme_enqueue_prism_assets() {
$version = '1.29.0';
wp_enqueue_style('prism-css',
get_stylesheet_directory_uri() . '/prism.css', [], $version);
wp_enqueue_script('prism-js',
get_stylesheet_directory_uri() . '/prism.js', [], $version, true);
}
Ora Prism.js evidenzierà automaticamente tutto il codice contenuto tra<pre><code>...</code></pre>.
Numerazione automatica delle righe
Puoi aggiungere un filtro WordPress per numerare automaticamente le righe:
add_filter('render_block_core/code', 'theme_add_prism_line_numbers', 10, 2);
function theme_add_prism_line_numbers($content, $block) {
return str_replace(
'<pre class="wp-block-code">',
'<pre class="wp-block-code line-numbers">',
$content
);
}
Escape dei caratteri HTML
Se il tuo codice contiene i simboli < o >, il browser potrebbe interpretarli come tag HTML.
Per evitarlo, aggiungi un filtro che li converta automaticamente quando salvi il post:
add_filter('content_save_pre', 'theme_escape_code_on_save');
function theme_escape_code_on_save($content) {
return preg_replace_callback(
'/<code([^>]*)>(.*?)<\/code>/is',
function ($m) {
$attrs = $m[1];
$code = htmlspecialchars($m[2], ENT_NOQUOTES, 'UTF-8');
return "<code{$attrs}>{$code}</code>";
},
$content
);
}
Stili per i blocchi di codice
Aggiungi questi stili nel file style.css del tema figlio:
pre[class*="language-"] {
border-radius: 6px;
border: 1px solid #ddd;
padding: 1em;
background: #f6f8fa;
font-family: 'Fira Code', Consolas, monospace;
font-size: 14px;
line-height: 1.6;
overflow: auto;
}
pre[class*="language-"].line-numbers {
padding-left: 3.8em;
}
Funzionalità aggiuntive di Prism.js
- 🔢 Numerazione delle righe — aggiunge numeri come negli IDE.
- 🧠 Evidenziazione di righe specifiche — usa
data-line="2,4-5"per mettere in risalto alcune righe. - 📋 Pulsante Copia — copia il codice con un clic.
- 💡 Nome del linguaggio — mostra il linguaggio sopra il blocco.
- 🌗 Tema chiaro e scuro — commutazione automatica:
@media (prefers-color-scheme: dark) {
body { background: #1e1e1e; color: #d4d4d4; }
}
- 🎨 Personalizzazione — puoi modificare i colori dei token nel tuo
style.css:
.token.keyword { color: #d73a49; font-weight: 600; }
.token.string { color: #032f62; }
.token.comment { color: #6a737d; font-style: italic; }
Prima e dopo Prism.js
Prima
<pre><code>
function greet(name) {
return `Hello, ${name}`;
}
</code></pre>
Risultato:
function greet(name) {
return `Hello, ${name}`;
}
Testo monospaziato, senza colori né numerazione.
Dopo
<pre class="line-numbers"><code class="language-js">
function greet(name) {
return `Hello, ${name}`;
}
</code></pre>
Risultato:
1 function greet(name) {
2 return `Hello, ${name}`;
3 }
Ogni riga ha un numero, il codice è colorato
e compare un pulsante Copy per copiare il contenuto.
Prism.js rende i frammenti di codice più chiari e leggibili.
Funziona interamente nel browser, senza plugin aggiuntivi,
e non influisce sulle prestazioni.
Una volta configurato, il codice apparirà ordinato, coerente e piacevole da leggere.