<

Globals

Ultima modifica: 14 Novembre 2024

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, numeri, 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:

  1. configuro una query base (per questo esempio) e la limito a 3 elementi
  2. 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:

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)