Il blocco gutenberg globals è un blocco esclusivo del wordpress Gpci framework e serve a impostare una variabile globale personalizzata direttamente dall'editor. Questo può servire ad esempio per azioni di massa nelle query oppure per evitare di creare campi personalizzati per una sola pagina. Il valore può essere ottenuto tramite php oppure tramite lo shortcode globals.
Controlli del blocco
Questo blocco ha pochi controlli ma devono essere impostati in modo preciso in base al risultato che si vuole ottenere. Dato che le globali impostate tramite questo blocco sono tutte interne a $GLOBALS['custom']
, se vengono eseguite operazioni come aggiornamenti di massa ai campi o altro di simile sarebbe meglio controllare prima i valori con php, ad esempio con un blocco gutenberg php o uno shortcode globals.
Nome variabile
Inserire uno o più nomi separati da una virgola utilizzando lettere, numero, spazi, trattini medi e trattini bassi. Evitare di iniziare o finire il nome con uno spazio o un carattere speciale. Questa sarà la chiave interna alla globale php custom e può essere utilizzata in 2 modi:
Nome singolo
- esempio: primo
La globale sarà direttamente interna a $GLOBALS['custom']
, quindi come da esempio corrisponderà a $GLOBALS['custom']['primo'] = valore impostato
.
Nomi multipli separati da virgole
- esempio: primo,secondo,terzo
La globale finale sarà interna alle altre, che saranno auto impostate come array se già non lo sono, e la prima sarà direttamente interna a $GLOBALS['custom']
. Quindi come da esempio avremo: $GLOBALS['custom']['primo']['secondo']['terzo'] = valore impostato.
Attenzione ai nomi che già avete impostato in php in quanto:
- se uno degli elementi già esiste e non è array sarà sovrascritto dal nuovo
- se uno degli elementi già esiste ma è array gli elementi successivi saranno inseriti al suo interno
Notare che sotto al campo testuale, nella zona di help, verrà indicata la variabile risultato per poterla verificare o copiare.
Valori multipli
Se attivato: altre globali con la stesso percorso e chiave verranno inserite nello stesso array invece che essere sovrascritte ogni volta. E' necessario attivarlo a ogni variabile seguente (se per caso ci sono attivazioni multiple) e serve più altro nelle azioni di massa tramite le query. Se una delle variabili seguenti non lo avrà attivato il valore verrà sovrascritto come valore singolo invece di essere aggiunto. Stessa cosa al contrario.
Tipo di valore e valore
Solita conversione dinamica tra i 2 campi.
Esempi
Imposta una globale singola
- nome variabile: test
- valori multipli: disattivato
- tipo di valore e valore: stringa - val
La variabile risultato sarà:
$GLOBALS['custom']['test'] == 'val'
Imposta una globale singola array
- nome variabile: test
- valori multipli: attivato
- tipo di valore e valore: stringa - val
La variabile risultato sarà:
$GLOBALS['custom']['test'] == array(
[0] => val
)
Imposta una globale array con valori multipli
Utilizzare 3 blocchi globals e impostare come segue:
Blocco 1
- nome variabile: test
- valori multipli: attivato
- tipo di valore e valore: stringa - val
Blocco 2
- nome variabile: test
- valori multipli: attivato
- tipo di valore e valore: stringa - val2
Blocco 3
- nome variabile: test
- valori multipli: attivato
- tipo di valore e valore: stringa - val3
La variabile risultato sarà:
$GLOBALS['custom']['test'] == array(
[0] => val
[1] => val2
[2] => val3
)
Imposta una globale array con valori multipli all'interno di una query
Ora utilizziamo una query per creare un'azione di massa:
- configuro una query base (per questo esempio) e la limito a 3 elementi
- inserisco il blocco globals all'interno del template configurandolo in questo modo:
- nome variabile: test-query
- valori multipli: attivato
- tipo di valore e valore: funzione php - get_the_ID
Risultato query:
-
Patterns
Patterns esclusivi del Gpci framework integrati nel tema.
-
Javascript
Variabili e funzioni javascript integrate nel framework.
-
Gpci framework
Risultato global
La variabile risultato sarà un array contenente i postID:
$GLOBALS['custom']['test'] == array(
[0] => 3007
[1] => 3008
[2] => 3022
)
Per eseguire un'azione di massa sui post mostrati:
- inserire un blocco gutenberg form e inviare al server via php
- inserire al suo interno un pulsante submit, ad esempio utilizzando il blocco gutenberg Button (gpci)
- nelle istruzioni php del blocco fare qualcosa del genere:
//Form php
foreach( $GLOBALS['custom']['test-query'] as $postid ){
update_post_meta( $postid, $meta_key, $meta_value );
}
(da fare per l'invio del form via javascript e per form interno al template)