Il blocco gutenberg head è esclusivo del wordpress Gpci framework e serve a inserire o modificare informazioni nella head della pagina corrente o nel template. E' pensato per inserire più che altro tag meta controllati e dati strutturati nei template ma è possibile inserire anche tag script, style e addirittura crearne di personalizzati. I tag personalizzati possono essere completati con il controllo attributi (probabilmente per aggiungere gli attributi name, property e content). E' importante specificare che se sono specificati 2 tag precompilati uguali l'ultimo sovrascriverà il primo. E' molto importante notare anche che il blocco head semplicemente definisce le globali php inerenti gli headtags, ma i contenuti verranno assegnati dai vari hooks inerenti. E' possibile quindi ottenere gli stessi risultati del blocco impostando le globali secondo i valori corretti.
Controlli del blocco
Questo blocco ha 3 modi di funzionamento:
- tag controllati: il tag è compilato automaticamente anche negli attributi e noi penseremo solo al contenuto
- tag personalizzati: nei controlli del blocco definiremo solo tag e contenuto, ma gli attributi dovremo generarli con il controllo generale
- handle script: è possibile accodare script preregistrati da wordpress oppure personalizzati specificando semplicemente il nome dell'handle e altre informazioni opzionali
Tag
Selezionare il tag precompilato e scrivere il contenuto, gli attributi aggiunti con il controllo generale non verranno aggiunti. Alternativamente selezionare generico e definire tag (apparirà un controllo aggiuntivo subito sotto) e attributi manualmente.
Schema generico
Selezionando schema generico il content, dopo la conversione dinamica, deve essere una stringa e i dati strutturati saranno inseriti direttamente, esempio:
{
"@context": "https://schema.org",
"@type": "ContactPage",
"mainEntity":{
"@type":"LocalBusiness",
"@id":"https://www.gigitopcinformatica.it/",
"name":"Gigitopc informatica"
}
}
Schema costruttore
Definisce sempre dati strutturati ma in modo automatico tramite interfaccia grafica. Questa modalità permette di usare un solo blocco per template o pagina aggiungendo automaticamente sia proprietà statiche che generate da un ciclo ai dati strutturati. Se i dati strutturati comprendono un ciclo (esempio una lista di servizi, corsi o altro) il blocco va sempre inserito all'interno della query che genera la lista. Il costruttore tenterà in vari contesti di rimuovere i tags html (compresi gli a capo) per evitare json non validi. I sotto controlli del costruttore sono:
Tipo
Tipo di dato strutturato come SoftwareApplication, Service, ecc... E' obbligatorio definirlo altrimenti non sarà aggiunto nulla.
Proprietà
Ripetizione di campi che definiscono le proprietà più esterne. Notare che le proprietà saranno aggiunte solo se non già esistenti, le proprietà @context e @type invece saranno aggiunte automaticamente. Definire:
Proprietà da stringa
Abilitare se proprietà multiple vengono inserite direttamente da una stringa. E' possibile ad esempio utilizzare un campo personalizzato di una pagina impostazioni per aggiungere dati strutturati ed aggiornarli sia per il template di archivio che per il template singolo:
//stringa o campo personalizzato
"proprietà 1":"valore proprietà 1",
"proprietà 2":"valore proprietà 2"
//se i dati sono contenuti in un campo personalizzato saranno sempre processati anche eventuali shortcodes
//(ho aggiunto un'eccezione per questo caso). Esempio:
"applicationSubCategory": "Tema Wordpress multifunzione",
"creator":{[render_data type="mb" data="localbusiness,dati-strutturati,object_type:setting"]}
//ini questo caso creator è il contenuto di un altro campo personalizzato
Attenzione in quanto se la stringa non è perfettamente formattata in json al posto del valore della proprietà (e probabilmente quella adiacente) sarà aggiunto il messaggio di errore.
Nome proprietà
Compare se non è abilitata la proprietà da stringa: inserire il nome della proprietà (come name, description, ecc...). Obbligatorio altrimenti la proprietà non sarà aggiunta (chiaramente se non abilitata la proprietà da stringa).
Valore proprietà
Valore della proprietà (conversione dinamica).
Forza valore
Compare se non è abilitata la proprietà da stringa: è possibile modificare il valore json nei casi (probabilmente rari) in cui potrebbe essere utile o necessario. E' possibile scegliere tra aggiungere/rimuovere apici o aggiungere parentesi quadre/graffe (al posto degli apici).
Notare che le proprietà saranno aggiunte solo se non già esistenti. Le proprietà @context e @type invece saranno aggiunte automaticamente.
Proprietà da query
Definisce le proprietà interne a una lista dinamica come potrebbe essere la costruzione di una lista itemListElement o offers. Specificare la chiave dell'array (esempio itemListElement o offers) altrimenti non verrà creata la lista dinamica e la ripetizione di campi che definiscono le proprietà. In questo caso le proprietà definite andranno ad aggiungere un oggetto all'array contenente le proprietà definite. In questo caso il blocco andrà sempre inserito in una query. I parametri sono gli stessi delle proprietà esterne con aggiunta di:
Sposta in sotto array
In certi casi, per la corretta validazione dei dati strutturati, alcune proprietà devono essere spostate in un sotto array. Inserire in questo campo il nome del sotto array e il costruttore, automaticamente, genererà sia il sotto array che le proprietà al suo interno. Se non serve lasciare semplicemente vuoto il campo. Esempio completo (proprietà da query):
- Inserire il blocco in una query
- Chiave array: itemListElement
- Proprietà 1 - nome: @type, valore(originale): ListItem, sposta in sotto array: vuoto
- Proprietà 2 - nome: position, valore(stringa): [global data="gpci,queries,current,current_post" functions="++"], sposta in sotto array: vuoto
- Proprietà 3 - nome: @type, valore(originale): SoftwareApplication, sposta in sotto array: item
- Proprietà 4 - nome: url, valore(campo wordpress): permalink, sposta in sotto array: item
Il risultato sarà qualcosa come:
{
"@context": "https://schema.org",
"@type": "ItemList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"item": {
"@type": "SoftwareApplication",
"url": "https://www.gigitopcinformatica.it/gpciframework/versione-tema/1745179767/"
}
},
{
"@type": "ListItem",
"position": 2,
"item": {
"@type": "SoftwareApplication",
"url": "https://www.gigitopcinformatica.it/gpciframework/versione-tema/1737743302/"
}
}
]
}
Content
In questa textarea è possibile inserire il contenuto dell'attributo content con conversione dinamica. Questi controlli compaiono solo se il tag non è manuale e se non si sta accodando un handle.
Nascondi il content
Se abilitato nasconde il content nell'editor, è utile nel caso che il content sia troppo lungo o sia calcolato dinamicamente.
Script e handle
Se si seleziona script è possibile accodare un handle preregistrato abilitando il controllo handle. Lo script sarà inserito nel frontend tramite la funzione wp_enqueue_script, mentre nel blocco sarà possibile inserirne i parametri esattamente come nella funzione. E' importante notare che lo script sarà sempre inserito nella head e mai nel footer. Se necessario in futuro verrà creato un blocco apposito per il footer. Per la lista degli handle pregenerati da wordpress leggere la documentazione.
Esempi
Questo blocco non ha un gran bisogno di esempi ma per capirne il funzionamento leggere gli snippet sui dati strutturati e tinymce
Ottenere lo stesso risultato del blocco (tag style) ma impostando semplicemente la globale php:
$GLOBALS['gpci']['headTags']['style'][] = '*{display:none}';
