Gli sviluppatori di temi WordPress possono utilizzare un file theme.json per semplificare un processo che in passato si basava in gran parte su PHP. Tuttavia, potete sempre utilizzare le vostre competenze in HTML, JavaScript e PHP per creare i vostri temi, e i CSS non fanno eccezione. Infatti, è possibile utilizzare le proprietà personalizzate CSS all’interno di theme.json. Questo può migliorare la fase di progettazione e offrire una maggiore flessibilità.

In questa guida affronteremo le proprietà personalizzate CSS per scoprire come funzionano con WordPress e theme.json. Ma prima di arrivare a questo punto, facciamo un riepilogo delle caratteristiche del file theme.json, del Full Site Editing (FSE) e di come i CSS si inseriscono in questo nuovo approccio alla progettazione.

Come funziona theme.json con WordPress

Il file theme.json è apparso per la prima volta con WordPress 5.8. Si tratta di un modo rivoluzionario di progettare i temi di WordPress, utilizzando la sintassi JSON per costruire un file di configurazione. WordPress lo legge e applica i risultati senza bisogno di PHP, CSS o JavaScript.

Una finestra dell'editor di codice che mostra il contenuto del file theme.json di un tema WordPress. La struttura JSON definisce le impostazioni del tema, comprese le versioni dello schema, i pattern e le impostazioni dei colori. Sullo sfondo è visibile un paesaggio panoramico con montagne, foreste e campi terrazzati.
Un file theme.json all’interno di un editor di codice.

Le impostazioni globali e gli stili di FSE controllano vari aspetti visivi del tema. Possono includere le tipiche palette di colori e la tipografia, ma anche le opzioni di layout e gli stili dei singoli blocchi ed elementi.

Sebbene il FSE sia intuitivo, potente, adattabile e facile da usare, theme.json può aiutare a colmare il divario tra l’utente finale e lo sviluppatore. Quasi tutte le opzioni offerte da theme.json sono visibili anche nell’Editor del sito.

L'interfaccia dell'editor del sito WordPress, che mostra la pagina iniziale di un sito web sul lato destro dello schermo, mentre la barra laterale nera di sinistra offre opzioni per la navigazione, gli stili, le pagine, i modelli e gli schemi.
L’interfaccia principale dell’editor del sito di WordPress.

L’utilizzo di theme.json offre molti vantaggi nella creazione di temi WordPress. I motivi sono molteplici:

  • Costituisce una posizione centrale per la configurazione del design del tema, il che rende più facile la gestione e l’aggiornamento.
  • C’è meno confusione tra l’esperienza front-end, l’editor del sito e la base di codice del tema.
  • L’utilizzo di theme.json offre compatibilità con il futuro dello sviluppo e del design di WordPress.
  • Le funzionalità integrate di WordPress riducono la necessità per l’utente di applicare CSS personalizzati.

Vediamo come theme.json si collega alle impostazioni globali e agli stili del FSE.

Un’introduzione alle impostazioni globali e agli stili del FSE

Il FSE rappresenta una nuova era nello sviluppo di temi WordPress e le impostazioni globali e gli stili sono in prima linea. Permettono agli utenti di personalizzare quasi ogni elemento dell’aspetto di un sito attraverso la funzionalità dell’Editor del sito.

L'editor del sito WordPress mostra i campi di immissione del pannello Stili nella barra laterale destra. Consente di apportare modifiche alle impostazioni tipografiche. Il lato sinistro mostra una vista parziale di una pagina web a tema blu.
Il pannello Stili dell’Editor del sito WordPress.

Qui potete regolare alcuni aspetti del layout del tema con opzioni che prima richiedevano l’uso di CSS o di un plugin per la creazione di pagine di terze parti. La modifica dei margini, del padding e dei bordi ne sono un esempio, ma ce ne sono molti altri.

L'editor del sito WordPress mostra il pannello di personalizzazione del layout. Consente di personalizzare le dimensioni del contenuto, il padding e la spaziatura dei blocchi. Il lato sinistro della schermata mostra una vista parziale di una pagina web a tema blu.
Lavorare con i tipici elementi CSS come padding e margini all’interno dell’Editor del sito.

Potete anche attivare o disattivare molte di queste funzionalità all’interno di theme.json (o del file block.json di un blocco). Questo supporta la personalizzazione dell’interfaccia utente insieme al design generale del sito.

Tuttavia, le opzioni a vostra disposizione, pur essendo ampie, potrebbero non coprire tutte le vostre esigenze, e ciò è particolarmente vero se state costruendo un tema da zero. Questo è un compito che le proprietà personalizzate CSS possono aiutare a risolvere.

Le proprietà personalizzate dei CSS

In PHP, JavaScript e in quasi tutti i linguaggi di programmazione, le variabili contengono i valori di vari elementi del codice. Ad esempio, potete memorizzare valori come nomi, date e numeri e utilizzarli nel programma.

Le variabili CSS3 – o proprietà personalizzate CSS, come le chiameremo in questo post – sono supportate dalla maggior parte dei browser attuali. Internet Explorer non le supporta, così come Opera Mini. Tuttavia, tutti i principali browser le supportano.

Un grafico di compatibilità per le variabili CSS (proprietà personalizzate) nei diversi browser web. Il grafico mostra un utilizzo globale elevato, pari al 97,05%, e indica un supporto diffuso tra i principali browser desktop e mobili.
Il sito web Can I Use mostra il supporto attuale delle proprietà personalizzate CSS.

Le proprietà personalizzate CSS permettono di memorizzare valori da riutilizzare nel vostro foglio di stile. È un modo potente per creare un CSS più dinamico e flessibile. Potete aggiornare più regole di stile cambiando un solo valore.

Il concetto di variabili CSS non è del tutto nuovo. Preprocessori come Sass utilizzano una funzionalità simile. Ad esempio, prendiamo il seguente esempio di Sass:

$font-stack: Helvetica, sans-serif
$primary-color: #333

body
  font: 100% $font-stack
  color: $primary-color

Questo processa il tipico CSS:

body {
  font: 100% Helvetica, sans-serif;
  color: #333;
}

Tuttavia, le proprietà personalizzate dei CSS portano il tutto direttamente al browser. Questo offre alcuni vantaggi:

  • Aggiornamenti dinamici. A differenza della maggior parte delle variabili del preprocessore, potete aggiornare le proprietà personalizzate CSS “al volo” utilizzando JavaScript.
  • Natura a cascata. Le proprietà personalizzate seguono la cascata CSS, il che offre una maggiore flessibilità e uno stile più consapevole del contesto.

Le proprietà personalizzate saranno anche più performanti grazie alla riduzione della ridondanza del codice. Fogli di stile più piccoli significano tempi di caricamento più rapidi.

La sintassi delle proprietà personalizzate CSS

Come per le tipiche variabili del preprocessore, la sintassi delle proprietà personalizzate CSS è semplice. Utilizza doppi trattini anziché segni di dollaro per specificare una proprietà:

:root {
  --primary-color: #007bff;
}

Da qui, si utilizza la funzione var() per assegnare queste proprietà agli elementi:

.button {
  background-color: var(--primary-color);
}

Notate che potete anche assegnare proprietà personalizzate utilizzando la proprietà @. Tuttavia, come capirete tra poco, WordPress semplifica l’intero processo.

Dove usare le proprietà personalizzate CSS

La versatilità è all’ordine del giorno quando si parla di proprietà personalizzate CSS. Con WordPress e theme.json avete a disposizione diversi modi per utilizzarle:

  • Preset: potete definire preset di colore, font e spaziatura.
  • Stili di blocco: i singoli blocchi possono utilizzare proprietà personalizzate per uno stile coerente.
  • Stili globali: le proprietà personalizzate sono preziose per il design dell’intero sito.

Potete creare proprietà completamente personalizzate per qualsiasi scopo vogliate. Vediamo un esempio pratico di come utilizzare le proprietà personalizzate nel vostro file theme.json:

{
  "settings": {
    "color": {
      "palette": [
        {
          "slug": "primary",
          "color": "#007bff",
          "name": "Primary"
        }
      ]
    },
    "custom": {
      "line-height": {
        "body": 1.5,
        "heading": 1.2
      }
    }
  },
  "styles": {
    "typography": {
      "lineHeight": "var(--wp--custom--line-height--body)"
    },
    "blocks": {
      "core/heading": {
        "typography": {
          "lineHeight": "var(--wp--custom--line-height--heading)"
        }
      }
    }
  }
}

Qui definiamo un colore preimpostato e utilizziamo la proprietà custom per definire i valori di line-height per i titoli e il corpo della pagina. WordPress genererà le proprietà CSS per gli elementi che definite utilizzando custom. Più avanti, possiamo assegnare queste proprietà personalizzate a vari stili, impostazioni, blocchi e altro ancora.

I vantaggi dell’uso delle proprietà personalizzate CSS

Forse avete già un’idea di come le proprietà personalizzate CSS possano aiutarvi nello sviluppo dei temi. Tuttavia, ci sono molti vantaggi da sottolineare.

Abbiamo già parlato di modularità e riutilizzabilità. Tutti i valori comuni che definite come proprietà personalizzate favoriscono la coerenza e riducono la ridondanza. Tale ridondanza si tradurrà in migliori prestazioni potenziali per il vostro tema.

Per l’utente finale, le proprietà personalizzate offrono diversi vantaggi:

  • Personalizzazione semplificata. Gli utenti e i proprietari dei siti possono personalizzare un tema senza dover avere conoscenze complesse di CSS. Una volta esposte le variabili attraverso theme.json, gli utenti possono accedere alle impostazioni attraverso l’Editor del sito.
  • Migliore compatibilità con FSE. Le proprietà personalizzate si allineano ai principi di FSE, permettendoti di creare temi più flessibili e dinamici.
  • Manutenzione e aggiornamenti più semplici. Se avete bisogno di aggiornare valori comuni a tutto il tema, una proprietà personalizzata permette di modificarli in un solo punto. Questo semplifica la manutenzione e rende più gestibili gli aggiornamenti e le modifiche.

In generale, le proprietà personalizzate possono migliorare il flusso di lavoro dello sviluppo del tema. Inoltre, la loro determinazione è più semplice rispetto all’utilizzo delle tipiche variabili CSS.

Come definire le proprietà CSS personalizzate nel file theme.json

Passiamo agli aspetti pratici della definizione e dell’utilizzo delle proprietà personalizzate CSS all’interno di theme.json. Il primo passo è imparare a scriverle.

Sintassi e convenzioni di denominazione

WordPress offre la proprietà custom per facilitare le definizioni. Questa proprietà è leggermente più semplice da usare rispetto alla proprietà @ o alle definizioni all’interno delle pseudo-classi e utilizza il formato standard chiave/valore:

{
  "settings": {
    "custom": {
      "property-name": "value"
    }
  }
}

Dietro le quinte, WordPress elaborerà questa definizione e genererà una proprietà CSS personalizzata utilizzando i doppi trattini:

--wp--custom--<custom-element>

--wp--custom-- sarà sempre parte della proprietà CSS e non utilizzerà le maiuscole. Ad esempio, se definite lineHeight come proprietà personalizzata, WordPress la trasformerà in “kebab case:”

--wp--custom--line-height

Per quanto riguarda le convenzioni di denominazione, potete usare le maiuscole se lo desiderate, ma vi consigliamo di usare le maiuscole per i nomi delle proprietà personalizzate. Questo è coerente con le convenzioni di denominazione di WordPress, migliora la leggibilità e riduce gli errori di elaborazione.

Nota: le proprietà personalizzate CSS utilizzano doppi trattini perché il gruppo di lavoro CSS del W3C vuole incoraggiare a utilizzare Sass (che utilizza il segno del dollaro per definire le proprietà). In questo modo, avete la possibilità di utilizzare entrambi i metodi per migliorare i vostri progetti.

WordPress definisce già alcune proprietà personalizzate – o almeno, i temi hanno la possibilità di farlo. Ciò significa che vedrete le variabili CSS all’interno di theme.json senza una dichiarazione esplicita:

{
  "settings": {
    "color": {
      "palette": [
        {
          "slug": "primary",
          "color": "var(--wp--preset--color--primary)",
          "name": "Primary"
        }
      ]
    },
    "custom": {
      "spacing": {
        "small": "1rem",
        "medium": "2rem",
        "large": "3rem"
      }
    }
  },
  "styles": {
    "spacing": {
      "blockGap": "var(--wp--custom--spacing--medium)"
    }
  }
}

In questo esempio, definiamo un colore primario utilizzando un colore preimpostato esistente. Poi, definiamo alcune proprietà di spaziatura personalizzate e le impostiamo con var().

In questo modo non abbiamo bisogno di codificare i valori in theme.json. Inoltre, gli utenti possono aggiornare questi valori nell’Editor del sito e fare in modo che si propaghino in tutto il tema.

Preset e proprietà personalizzate

Naturalmente, theme.json permette anche di definire dei preset per i colori, le dimensioni dei caratteri e altri elementi comuni del tema. D’altra parte, potete usare le proprietà personalizzate per qualsiasi valore che volete riutilizzare nel vostro tema.

La differenza maggiore riguarda le convenzioni di denominazione e l’accessibilità. Gli utenti non saranno in grado di accedere alle proprietà personalizzate nell’Editor del sito senza un ulteriore lavoro da parte vostra. Con le preimpostazioni, WordPress genererà un CSS simile a quello che elabora le proprietà personalizzate:

{
  "settings": {
    "color": {
      "palette": [
        {
          "slug": "primary",
          "color": "#007bff",
          "name": "Primary"
        }
      ]
    },
    "custom": {
      "fontFamily": {
        "base": "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif",
        "headings": "'Helvetica Neue', Helvetica, Arial, sans-serif"
      }
    }
  }
}

Una volta che WordPress le avrà elaborate, potrete notare le differenze intrinseche:

--wp--preset--primary: #007bff;
--wp--custom--font-family--base: "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif";
--wp--custom--font-family--headings: "'Helvetica Neue', Helvetica, Arial, sans-serif";

Notate che l’ulteriore annidamento delle proprietà utilizzerà doppi trattini, anche dopo aver convertito il camel case in kebab case.

CSS globale e specifico per il blocco rispetto alle proprietà CSS personalizzate

Con il classico WordPress, per disegnare gli elementi all’interno del tema si usavano CSS aggiuntivi e personalizzati sul front-end. Questo è ancora il caso di theme.json e del FSE, anche se l’approccio è diverso dalle proprietà personalizzate CSS.

Se visitate l’Editor del sito e andate nella schermata Stili, noterete la sezione CSS aggiuntivi. Questa funziona come un pannello CSS personalizzato nelle installazioni classiche di WordPress:

Una vista parziale dell'Editor del sito WordPress che mostra i collegamenti alle impostazioni dei Blocchi e dei CSS aggiuntivi. Il lato sinistro dello schermo mostra una vista parziale di un edificio su un cielo blu.
La sezione CSS aggiuntivi nell’Editor del sito WordPress.

Rappresenta un modo per aggiungere una personalizzazione CSS globale a un tema. Tuttavia, è un modo per dare agli utenti la possibilità di aggiungere CSS. Potreste anche utilizzarla per apportare piccole modifiche che non giustificano un intero foglio di stile.

All’interno di theme.json, utilizzate la proprietà css per definire qualsiasi CSS aggiuntivo desideriate:

{
  "version": 3,
    "styles": {
      "css": "margin: 0"
    }
}

Notate che non è necessario utilizzare il punto e virgola per terminare le dichiarazioni CSS. Potete anche impostare un CSS personalizzato per i blocchi:

{
  "version": 2,
  "styles": {
    "blocks": {
      "core/post-title": {
        "css": "letter-spacing: 1px;"
      }
    }
  }
}

Ogni volta che impostate un CSS di questo tipo all’interno di theme.json, lo vedrete in tutti i campi CSS aggiuntivi dell’editor del sito. Tuttavia, ricordate che nulla di ciò che dichiarate utilizzando css è una proprietà CSS personalizzata.

Usare il selettore ampersand (&)

Come Sass, anche WordPress supporta il selettore ampersand, con alcune differenze. In questo caso, si tratta di un ottimo modo per puntare a elementi e proprietà annidate. Questo potrebbe essere importante se scegliete di dichiarare proprietà CSS personalizzate per singoli blocchi.

Prendiamo il seguente esempio:

…
"styles": {
  "blocks": {
    "core/table": {
      "css": "color:#333 & th{ background:#f5f5f5; }"
    }
…

Questo definisce un colore di testo e un colore di sfondo per l’elemento intestazione della tabella. Una volta che WordPress lo elabora, otterrete un CSS pulito e semplice:

.wp-block-table > table {
  color: #333;
}

.wp-block-table > table th {
  background: #f5f5f5;
}

I selettori ampersand sono eccellenti se desiderate estendere un CSS. Un modo comprensibile di pensare al selettore è che aiuta a separare gli elementi CSS. Vediamo il seguente esempio:

{
  "version": 3,
  "styles": {
    "blocks": {
      "core/avatar": {
        "css": "& img {border-radius: 999px}"
      }
    }
  }
}

Aggiunge un raggio al bordo di un avatar e produce il CSS come ci si aspetterebbe:

.wp-block-image img {
  border-radius: 999px;
}

Tuttavia, senza l’ampersand, WordPress unirebbe le dichiarazioni:

…
​​.wp-block-imageimg
…

L’utilizzo del selettore con l’ampersand per le proprietà personalizzate CSS sarà un’attività che farete regolarmente.

Il ruolo di Kinsta nel supportare lo sviluppo moderno di WordPress

La scelta dell’hosting è importante quanto qualsiasi linguaggio di programmazione, preprocessore o altro elemento tecnico. Senza un provider di hosting di qualità al vostro fianco, non potrete beneficiare delle prestazioni e degli strumenti di theme.json o FSE.

Kinsta può essere il fulcro del vostro intero flusso di lavoro, grazie ai nostri strumenti di sviluppo. Potete iniziare con DevKinsta, il nostro ambiente di sviluppo locale che utilizza i container Docker per isolare la vostra installazione di WordPress:

L'interfaccia di DevKinsta mostra le impostazioni di configurazione del database e di WordPress. Mostra i dettagli della connessione, compresi host, porta, nome del database e versione di WordPress. L'interfaccia mostra anche le opzioni per abilitare il debug e gli aggiornamenti automatici di WordPress.
L’interfaccia principale di DevKinsta.

Una funzionalità utile è la capacità di DevKinsta di eseguire il push e il pull dei dati tra il vostro computer locale e gli ambienti di staging di Kinsta:

Una vista parziale dell'interfaccia di DevKinsta che mostra le informazioni sul sito e le opzioni di controllo. L'interfaccia mostra i pulsanti per l'apertura del sito, la sincronizzazione, l'accesso al database manager e l'amministrazione di WordPress. Un menu a tendina rivela le opzioni per eseguire il push o il pull da Kinsta. Il tipo di sito è indicato come WordPress, con informazioni visibili ma parziali sull'host.
Le opzioni di push e pull da Kinsta all’interno di DevKinsta.

Questo permette di testare i vostri temi in un ambiente simile alla produzione prima di iniziare a distribuirli. Quando lavorate con le proprietà personalizzate dei CSS, potete assicurarvi che funzionino in contesti diversi. L’API di Kinsta può supportare la volta pipeline CI/CD una volta pronti ad andare in produzione.

Altri aspetti dell’architettura di Kinsta vi aiuteranno nell’intera configurazione di sviluppo. Ad esempio, Kinsta supporta Git, il che rende facile il controllo della versione dei file del tema, compreso theme.json. Per iterare le proprietà personalizzate o semplicemente per sperimentare diverse configurazioni, vorrete sapere che avete a disposizione un’opzione di rollback.

Infine, se scegliete di utilizzare il vostro tema su un server Kinsta, il nostro Edge Caching aumenta le prestazioni di theme.json fino all’80%. Avere un sito web che funziona velocemente a prescindere dal browser dell’utente farà sì che le aggiunte personalizzate vengano visualizzate prontamente.

Riepilogo

Così come theme.json è un potente file di configurazione per creare temi WordPress flessibili e manutenibili, le proprietà personalizzate CSS sono fondamentali per il flusso di lavoro. È così che costruirete e dichiarerete il CSS per gli elementi che non si possono costruire con l’Editor del sito. Saranno inoltre fondamentali se costruite i vostri blocchi o semplicemente se volete sviluppare temi WordPress unici con la massima profondità di personalizzazione. Inoltre, avete anche la possibilità di condividere il CSS con gli utenti attraverso l’Editor del sito.

Le proprietà personalizzate CSS faranno parte del vostro flusso di lavoro per lo sviluppo di temi? Se sì, come le utilizzerete? Condividete le vostre idee nella sezione commenti qui sotto!

Jeremy Holcombe Kinsta

Content & Marketing Editor presso Kinsta, web developer di WordPress e content writer. Al di fuori di tutto ciò che riguarda WordPress, mi piacciono la spiaggia, il golf e il cinema. Ho anche i problemi di tutte le persone più alte della media ;).