Questa pagina ha l'obbiettivo di aiutare alla compilazione dei dati strutturati più utili con relativi template e guidarci all'inserimento nel wordpress Gpci framework. Tutti i template saranno in formato json e per inserirli utilizzeremo il blocco gutenberg head (a livello template) oppure i campi personalizzati appositi del modulo meta (a livello di pagina singola). Sarebbe bene specificare i dati strutturati per tutti i siti web che si interfacciano con i motori di ricerca e/o servizi esterni per aiutarli a capirne il contenuto e la struttura del sito. E' anche utile anche rispettare indicativamente o almeno avere una panoramica delle seguenti linee guida per l'utilizzo dei dati strutturati:
- i dati strutturati devono essere pertinenti al contenuto della pagina
- le descrizioni dei dati strutturati devono essere visibili anche nel contenuto
- ogni pagina ha un contenuto principale, quindi descrivere i dati strutturati che riguardano quel contenuto
Solitamente inseriremo i dati strutturati in uno dei seguenti modi:
- nei template delle pagine archivio (site editor) tramite il come loop automatico in base alla query di archivio utilizzando il blocco gutenberg head, probabilmente utilizzando il costruttore e le proprietà da query
- nei template dei post types singoli (site editor) utilizzando sempre il blocco gutenberg head, probabilmente utilizzando il costruttore e le proprietà NON da query
- nelle pagine singole come contatti, chi siamo e pagina iniziale utilizzando i campi personalizzati appositi del modulo meta a livello di pagina singola
Alternativamente è possibile inserire una o più definizioni di dati strutturati all'interno di pagina impostazioni poi ottenere le informazioni tramite php, shortcode render_data oppure shortcode rwmb_meta. Esempio:
- creare una pagina impostazioni id: opzionisito
- creare il campo di tipo textarea id: local-business-schema (l'id della metabox è indifferente)
- per aggiungere il syntax highlighting aggiungere attributo personalizzato onclick:CmTargetTextarea( jQuery, TextareaId='#'+event.target.id, CmMode='text/javascript' );
- andare alla pagina impostazioni e inserire nella textarea il contenuto schema
LocalBusiness
Lo schema LocalBusiness può essere utilizzato su pagine dedicate ad attività locali in cui le persone devono andare fisicamente o che lavorano in una zona definita. Se il sito è dedicato all'attività (caso più comune) probabilmente la cosa più semplice è inserire questo schema nella pagina iniziale tramite il modulo modulo meta. Esempio:
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"@id": "URL_PAGINA",
"name": "NOME_ATTIVITA",
"vatID": "IT_PARTITA_IVA",
"description": "DESCRIZIONE_ATTIVITA",
"logo": "URL_IMMAGINE_LOGO",
"address": {
"@type": "PostalAddress",
"streetAddress": "INDIRIZZO",
"addressLocality": "CITTA",
"addressRegion": "REGIONE",
"postalCode": "CAP",
"addressCountry": "IT"
},
"hasMap": "LINK_CONDIVISIONE_GOOLE_MAPS",
"telephone": "+39TELEFONO",
"email": "EMAIL",
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
"Sunday"
],
"opens": "08:00",
"closes": "21:00"
}
],
"priceRange": "€50+",
"image": [
"URL_IMMAGINE_DESCRITTIVA_1",
"URL_IMMAGINE_DESCRITTIVA_2"
],
"url": "URL_PAGINA_INIZIALE",
"sameAs": [
"URL_PAGINA_FACEBOOK",
"URL_PAGINA_TWITTER",
"URL_PAGINA_LINKEDIN",
"URL_PAGINA_INSTAGRAM",
"LINK_CONDIVISIONE_BING_MAPS"
],
"geo": {
"@type": "GeoCoordinates",
"latitude": "44.49XXXXX",
"longitude": "11.28XXXXX"
},
"areaServed": [
{
"@type": "Place",
"name": "CITTA"
},
{
"@type": "Place",
"name": "Provincia di CITTA"
}
]
}
ContactPage
Lo schema ContactPage va inserito nella pagina dedicata ai contatti con il cliente, in cui compaiono telefono, email profili social pubblici, modulo contatti e mappa. Anche qui la cosa più semplice probabilmente è utilizzare i modulo meta e inserire qualcosa come:
{
"@context": "https://schema.org",
"@type": "ContactPage",
"mainEntity":[render_data type="mb" data="seo_schema,9" nesting="0"]
//9 è per esempio l'id della pagina iniziale e nesting è utilizzato in quanto il campo è ripetibile
}
AboutPage
Lo schema AboutPage va inserito nella pagina chi siamo, cioè la pagina che descrive come è composta l'attività, la sua filosofia e la sua storia. E' possibile fare come sopra (sempre tramite il modulo meta), ma vediamo come ottenere le informazioni da una pagina impostazioni cambiando anche shortcode, esempio:
{
"@context": "https://schema.org",
"@type": "AboutPage",
"mainEntity":{ [rwmb_meta id="local-business-schema" object_id="opzionisito" object_type="setting"] }
}
Service
Lo schema Service va inserito nelle pagine dedicate ai servizi del sito, questi dati strutturati sono da utilizzare quando non c'è nulla di più specifico. Per queste pagine probabilmente ci sarà un post type dedicato inoltre ricicleremo i dati local business configurati prima: quindi nel site editor, dopo aver creato il template del servizio singolo, inserire un blocco gutenberg head con il codice:
{
"@context":"https://schema.org/",
"@type":"Service",
"serviceType":"[render_data data="title"]",
"description":"[render_data data="excerpt"]",
"provider":{ [rwmb_meta id="local-business-schema" object_id="opzionisito" object_type="setting"] }
}
A questo punto dovremo inserire i dati strutturati anche nell'archivio dei servizi, nel template archivio servizi. Per fare questo inserire un blocco gutenberg globals all'interno della query per generare gli items dei singoli servizi e configurarlo con:
- nome variabile: loop
- abilitare valori multipli
- tipo valore: stringa
- valore:
"@type":"Service",
"name":"[render_data data="title"]",
"serviceType":"[render_data data="title"]",
"url":"[render_data data="permalink"]",
"description":"[render_data data="excerpt"]",
"provider":{ [rwmb_meta id="local-business-schema" object_id="opzionisito" object_type="setting"] }
Ora inserire un blocco gutenberg head dopo la query configurato con:
- tag: schema
- tipo valore: stringa
- valore:
{
"@context":"https://schema.org",
"@type":"ItemList",
"name":"Servizi",
"itemListElement":[
[foreach type="global" data="custom,loop" functions="RemoveFromLastComma"]{
"@type": "ListItem",
"position":[globals data="foreach,idshortcode,order"],
"item":{
[globals data="foreach,idshortcode,value"]
}
},
[/foreach]
]
}
TechArticle
Gli schema TechArticle possono essere utilizzati su pagine dedicate a documentazioni di tipo tecnico come guide e risoluzioni dei problemi. E' sufficiente fare come nel tipo Services cambiando semplicemente le proprietà. Esempio:
{
"@context":"https://schema.org/",
"@type":"TechArticle",
"headline":"[render_data data="title"]",
"datePublished":"[render_data data="date,id,c"]",
"dateModified":"[render_data data="modified_date,id,c"]",
"description":"[render_data data="excerpt"]",
"publisher":{ [rwmb_meta id="local-business-schema" object_id="opzionisito" object_type="setting"] }
}
Recipe
Gli schema Recipe sono utilizzati nelle pagine di ricette singole in un sito di cucina. Esempio:
{
"@context": "https://schema.org",
"@type": "Recipe",
"name": "NOME_RICETTA",
"image": "IMMAGINE_DI_ANTEPRIMA",
"author": {
"@id": "ID_ATTIVITA_VEDERE_SOPRA"
},
"datePublished": "DATA_PUBBLICAZIONE",
"dateModified": "DATA_MODIFICA",
"description": "RIASSUNTO",
"recipeCuisine": "Italian",
"prepTime": "ESEMPIO_PT85M",
"cookTime": "ESEMPIO_PT30M",
"totalTime": "SOMMA_PRECEDENTI_ESEMPIO_PT115M",
"keywords": [
"tradizionale",
"vegetariano"
],
"recipeYield": "NUMERO_PORZIONI",
"recipeCategory": "PRIMO_PIATTO",
"nutrition": {
"@type": "NutritionInformation",
"calories": "NUMERO_CALORIE"
},
"recipeIngredient": [
"farina 400 gr",
"uova (4)"
],
"recipeInstructions": [
{
"@type": "HowToStep",
"name": "TITOLO_PASSAGGIO",
"text": "DESCRIZIONE_PASSAGGIO",
"url": "URL_PAGINA/#istruzione-1"
},
{
"@type": "HowToStep",
"name": "TITOLO_PASSAGGIO_2",
"text": "DESCRIZIONE_PASSAGGIO_2",
"url": "URL_PAGINA/#istruzione-2"
}
]
}
Recipe archivio
Schema utilizzabile in una pagina di archivio ricette:
{
"@context": "https://schema.org",
"@type": "ItemList",
"name": "Ricette di NOME_SCUOLA",
"description": "DESCRIZIONE_ARCHIVIO",
"itemListElement": [
{
"@type": "ListItem",
"position": 0,
"item": {
"@type": "Recipe",
"url": "URL_RICETTA",
"name": "NOME_RICETTA",
"@id": "URL_RICETTA",
"image": "URL_IMMAGINE_ANTEPRIMA_RICETTA",
"datePublished": "DATA_PUBBLICAZIONE_RICETTA_ESEMPIO_2025-05-06",
"dateModified": "DATA_MODIFICA_RICETTA_ESEMPIO_2025-05-06"
}
]
}
