Salta al contenuto

Ti risponde Salvatore, di persona: niente centralini, niente ticket.

Metafield e metaobject Shopify: campi personalizzati senza app

Copertina: metafield e metaobject Shopify per campi personalizzati senza app, con codice Liquid di un metafield

Materiale, ingredienti, istruzioni di lavaggio, tabella taglie, scheda tecnica. Prima o poi ogni catalogo ha informazioni che non stanno nei campi standard del prodotto. La risposta di Shopify sono i metafield e i metaobject, e per usarli non serve nessuna app.

In breve: i metafield Shopify sono campi personalizzati che aggiungi a prodotti, varianti, collezioni o clienti, per salvare informazioni che i campi standard non prevedono. I metaobject sono schede con più campi, che crei una volta e colleghi a tanti prodotti. Li definisci dall’admin e li mostri nel tema con le origini dinamiche o con Liquid.

In questo articolo ti mostro prima la strada senza codice, poi quella con Liquid, e alla fine un esempio completo: una tabella taglie che scrivi una volta sola e usi su tutti i prodotti che ne hanno bisogno.

Metafield e metaobject: la differenza in una frase

Un metafield è un campo in più su una cosa che esiste già: “Materiale” su un prodotto, “Ingredienti” su una variante, “Testo promozionale” su una collezione. Ogni prodotto ha il suo valore.

Un metaobject è un tipo di contenuto nuovo, con i suoi campi, che vive da solo: una tabella taglie, una scheda “designer”, una certificazione. Crei le voci una volta e le colleghi ai prodotti con un metafield. Se cambi la tabella, cambia su tutti i prodotti collegati.

Differenza tra metafield e metaobject in Shopify: un campo su ogni prodotto contro una scheda riutilizzabile, con esempi
Metafield: un campo su ogni prodotto. Metaobject: una scheda riutilizzabile.

Le due cose lavorano insieme. Lo spiega bene la documentazione sui dati personalizzati: il metafield è il collegamento, il metaobject è il contenuto collegato. Se stai ancora prendendo confidenza con l’admin, ti può servire prima come funziona Shopify per l’e-commerce.

Creare una definizione di metafield

Prima di scrivere valori si crea una definizione: dice a Shopify come si chiama il campo, di che tipo è e su quali risorse vale. Il percorso è questo:

  1. nell’admin vai in Impostazioni > Metafield e metaobject (in alcuni negozi la voce si chiama ancora “Dati personalizzati”) e scegli Prodotti;
  2. clicca Aggiungi definizione e scrivi un nome, per esempio “Materiale”;
  3. Shopify genera l’identificativo custom.materiale: custom è lo spazio dei nomi (namespace), materiale la chiave;
  4. scegli il tipo: per il materiale va bene “Testo su una riga”; se i valori sono più di uno, passa da “Un valore” a “Elenco di valori”;
  5. salva.

Da quel momento, aprendo un prodotto trovi il campo “Materiale” nella sezione Metafield, in fondo alla pagina. Puoi compilarlo a mano, con la modifica in blocco o con l’importazione CSV. Le istruzioni ufficiali sono nella guida ai metafield del Centro assistenza.

Il mio consiglio: prima di creare un campo tuo, guarda se Shopify ne propone uno standard per la categoria del prodotto (colore, taglia, tessuto). I campi standard sono già collegati ai filtri e ai canali di vendita.

Mostrarlo senza codice: le origini dinamiche

Nei temi Online Store 2.0 puoi collegare un metafield a un’impostazione dell’editor. Si chiamano origini dinamiche e funzionano così:

  1. apri Personalizza sul tema e vai su un modello prodotto;
  2. nella sezione delle informazioni prodotto aggiungi un blocco, per esempio Testo;
  3. accanto al campo del testo clicca l’icona “Collega origine dinamica” e scegli il metafield “Materiale”;
  4. salva: ogni prodotto mostrerà il suo materiale, e i prodotti senza valore non mostreranno niente.

È la strada che consiglio per testi, numeri, immagini e link. Ha due limiti: l’impostazione deve accettare quel tipo di dato, e la grafica è quella del blocco del tema. Per elenchi impaginati, tabelle o logiche come “mostra solo se”, serve Liquid.

Mostrarlo con Liquid

In Liquid un metafield si legge con risorsa.metafields.namespace.chiave, e il valore vero sta nella proprietà .value. Il riferimento completo è la pagina dell’oggetto metafield. Se Liquid è nuovo per te, parti dalla mia guida pratica a Liquid.

Testo e numeri

sections/main-product.liquid (o un blocco Liquid personalizzato)

{%- assign materiale = product.metafields.custom.materiale.value -%}
{%- if materiale != blank -%}
  <p class="scheda__riga">Materiale: {{ materiale | escape }}</p>
{%- endif -%}

Il controllo != blank serve per i prodotti senza valore: senza, vedresti “Materiale:” seguito dal vuoto. Per i numeri vale lo stesso schema: {{ product.metafields.custom.garanzia_anni.value }} stampa il numero così com’è.

C’è anche una scorciatoia: il filtro metafield_tag crea da solo l’HTML adatto al tipo. È comodo soprattutto per il testo formattato:

{{ product.metafields.custom.istruzioni | metafield_tag }}

Liste

Con un metafield di tipo elenco, .value restituisce un array e lo scorri con for. Ecco gli ingredienti in un elenco puntato:

{%- assign ingredienti = product.metafields.custom.ingredienti.value -%}
{%- if ingredienti != blank -%}
  <ul class="ingredienti">
    {%- for ingrediente in ingredienti -%}
      <li>{{ ingrediente | escape }}</li>
    {%- endfor -%}
  </ul>
{%- endif -%}

Per gli elenchi di testo su una riga, metafield_tag fa la stessa cosa in una riga: secondo la documentazione del filtro crea un <ul>, oppure un <ol> con il parametro list_format: 'ordered'.

Riferimenti a metaobject

Quando un metafield è di tipo “Metaobject”, .value non è un testo: è la voce del metaobject collegata. I suoi campi si leggono con la loro chiave, e di nuovo con .value: product.metafields.custom.designer.value.nome.value. Sembra lungo, ma la logica è sempre la stessa.

Se ti serve una voce precisa senza passare dal prodotto, c’è l’oggetto globale metaobjects: {{ metaobjects.designer.mario-rossi.nome.value }} legge il campo “nome” della voce con handle mario-rossi del tipo designer, come mostra la pagina dell’oggetto metaobject.

Esempio completo: tabella taglie riutilizzabile

Mettiamo tutto insieme. L’obiettivo: una tabella taglie per tipo di capo (“Maglie uomo”, “Pantaloni donna”), scritta una volta e collegata a decine di prodotti. Se cambi una misura, la correggi in un punto solo.

  1. Metaobject “Riga taglia” (tipo riga_taglia) con tre campi di testo su una riga: taglia, torace, vita;
  2. Metaobject “Tabella taglie” (tipo tabella_taglie) con due campi: titolo (testo) e righe (elenco di riferimenti a “Riga taglia”);
  3. in Contenuti > Metaobject crei le voci: prima le righe (S, M, L…), poi la tabella “Maglie uomo” che le elenca in ordine;
  4. crei un metafield prodotto “Tabella taglie” di tipo Metaobject, collegato a “Tabella taglie”: identificativo custom.tabella_taglie;
  5. su ogni prodotto scegli la tabella giusta dal menu del metafield.

Quando crei le definizioni lascia attivo l’accesso Storefronts, come indica la guida di Shopify sui riferimenti ai metaobject: è il primo controllo da fare se la tabella non compare.

Poi il codice. Lo metto in uno snippet, così lo richiami dove vuoi:

snippets/tabella-taglie.liquid

{%- assign tabella = product.metafields.custom.tabella_taglie.value -%}
{%- if tabella -%}
  <table class="tabella-taglie">
    <caption>{{ tabella.titolo.value | escape }}</caption>
    <tr><th>Taglia</th><th>Torace (cm)</th><th>Vita (cm)</th></tr>
    {%- for riga in tabella.righe.value -%}
      <tr>
        <th scope="row">{{ riga.taglia.value | escape }}</th>
        <td>{{ riga.torace.value | escape }}</td>
        <td>{{ riga.vita.value | escape }}</td>
      </tr>
    {%- endfor -%}
  </table>
{%- endif -%}
Codice Liquid che mostra una tabella taglie salvata come metaobject e collegata al prodotto Shopify con un metafield
Lo snippet della tabella taglie: dal metafield del prodotto alle righe del metaobject.

Riga per riga: la prima prende la tabella collegata al prodotto; se il prodotto non ne ha, tabella è vuota e l’if non stampa niente. La didascalia mostra il titolo della tabella. Il ciclo scorre le righe nell’ordine in cui le hai messe nell’admin, e per ogni riga stampa taglia, torace e vita.

Per mostrarla nella pagina prodotto aggiungi {% render 'tabella-taglie', product: product %} nel punto giusto di sections/main-product.liquid, oppure in un blocco “Liquid personalizzato” dall’editor, se il tuo tema lo prevede. Se vuoi una sezione tutta tua per mostrarla, il procedimento è quello che spiego in come creare una sezione personalizzata in Shopify.

Le intestazioni della tabella sono scritte in italiano nel codice. Se il negozio è in più lingue, spostale nei file di traduzione del tema e leggile con il filtro t.

Errori comuni

Quando un metafield “non si vede”, il problema è quasi sempre uno di questi:

  • Namespace o chiave sbagliati: custom.materiale non è custom.Materiale. Copia l’identificativo dalla definizione, non riscriverlo a memoria.
  • Manca .value: senza, su molti tipi ottieni l’oggetto e non il contenuto.
  • Elenco trattato come valore singolo: se il tipo è “Elenco di valori”, serve un ciclo for (o metafield_tag).
  • Valori vuoti non gestiti: senza il controllo != blank restano etichette senza contenuto.
  • Voci di metaobject in bozza: se il metaobject prevede lo stato attivo/bozza, una voce in bozza in Liquid risulta vuota.
  • Modifiche sul tema pubblicato: anche qui, si lavora su una copia del tema.

Domande frequenti

Quanti metafield posso creare?

Per ogni tipo di risorsa (prodotti, varianti, collezioni, clienti e così via) puoi creare fino a 256 definizioni di metafield; le app installate hanno un limite separato. Il dato è verificato a ottobre 2026 sulla pagina dei limiti di shopify.dev. Nella pratica, se ti avvicini a quel numero, conviene raggruppare le informazioni in metaobject.

I metafield si importano con il CSV dei prodotti?

Sì, quelli dei prodotti. Nel file CSV ogni metafield ha una colonna con l’identificativo, per esempio product.metafields.custom.materiale, e una volta creata la definizione compare anche nelle esportazioni. I metafield delle varianti invece non passano dal CSV dei prodotti: si modificano con la modifica in blocco delle varianti, come indica la guida di Shopify.

Le origini dinamiche funzionano con tutti i temi?

No. Servono un tema Online Store 2.0, con template in formato JSON, e sezioni o blocchi le cui impostazioni accettano quel tipo di dato. Nei temi vecchi, o per tipi non supportati dal blocco, l’unica strada è aggiungere qualche riga di Liquid nel file della sezione o in uno snippet.

I metafield aiutano la SEO?

Non direttamente: Google non vede i metafield, vede la pagina. Aiutano quando il loro contenuto finisce nella pagina come testo utile, per esempio materiali, misure, istruzioni. Sono anche la base per filtri di collezione più precisi e per dati strutturati più completi, che vanno però scritti nel tema.

Conclusione

Metafield per un’informazione in più su ogni prodotto, metaobject per contenuti riutilizzabili. Prima prova le origini dinamiche; quando non bastano, poche righe di Liquid fanno il resto. Schede prodotto complete e ordinate sono anche uno dei segnali che il cliente guarda per capire se un e-commerce è affidabile. Perché le legga bene anche Google contano title, dati strutturati e un solo H1 per pagina: ne parlo nella guida alla SEO tecnica del tema Shopify.

Se stai impostando il catalogo da zero, i campi personalizzati li progetto insieme alla realizzazione del negozio online; su un negozio Shopify esistente è parte del lavoro di realizzazione e migrazione Shopify.

Il tuo catalogo ha informazioni che non sai dove mettere? Scrivimi: ti preparo io campi e sezioni. Ti rispondo io.

Scritto da

Salvatore Pitone

Sviluppatore web, realizzo siti WordPress ed e-commerce per professionisti e piccole imprese. Sul blog condivido quello che imparo ogni giorno lavorando sui siti dei miei clienti.

Richiedi un preventivo

Preventivo gratuito

Partiamo dal tuo progetto, con calma e chiarezza.

Scrivimi cosa ti serve. Ti richiamo io, ti faccio qualche domanda e ti mando un preventivo chiaro, senza sorprese e senza tecnicismi.

Salvatore Pitone, sviluppatore web, sorridente con le braccia incrociate
Ti rispondo io, Salvatore. Niente call center: leggo personalmente ogni richiesta e ti rispondo entro 24 ore lavorative.

Raccontami il tuo progetto

Ti rispondo personalmente entro 24 ore lavorative.