<

Condition

Ultima modifica: 19 Novembre 2024

Condition è uno shortcode esclusivo del wordpress Gpci framework e serve replicare il controllo condizioni di rendering (ovviamente senza possibilità di eval), consentendo ad esempio di generare stringhe inline soltanto se una o più condizioni sono rispettate. E' importante specificare che per ora supporta soltanto il costrutto php if; in futuro, se sarà utile, saranno aggiunti anche i costrutti elseif ed else.

Attributi dello shortcode

Questo shortcode è di tipo enclosing quindi verrà utilizzato nella seguente struttura:

[condition attributo="valore"]
  Contenuto condizionale
[/condition]

E' molto importante capire che le condizioni, a differenza del controllo, non possono essere aggiunte all'infinito. Per ora le condizioni sono limitate a 2, in futuro può essere valutato se portarle fino a 3 o 4 ma è bene ricordare che grazie alla conversione dinamica possono essere utilizzate funzioni in whitelist per condizioni nested e/o multiple. E' importante anche sapere che il contenuto dello shortcode non sarà generato a meno che la condizione/condizioni non sia rispettata.

type1

Tipo di campo per la conversione dinamica. Valore predefinito: string. Per la lista di tutti i possibili valori leggere il parametro type della funzione php GpciContentTypeConversion. Notare che funzioni php, costanti php e stringhe php non funzioneranno. Evitare l'utilizzo di shortcodes come argomento.

data1

Dato da ottenere per la conversione dinamica. Esempi nel caso di type="wp":

  • id - id del post
  • title - titolo del post
  • permalink - url del post
  • bloginfo,description - descrizione del sito
  • userdata,id,user_email - email dell'utente corrente

comparator1

Comparatore php, obbligatorio altrimenti la condizione non verrà proprio calcolata. Per la lista di tutti i possibili valori leggere il parametro type della funzione php GpciConditionComparator. Esempi:

  • ==
  • ===
  • <
  • !==

type2

Come sopra ma per convertire dinamicamente l'attributo data2.

data2

Come sopra ma riceverà il tipo dall'attributo type2.

A questo punto, se si è familiari con il sistema, dovrebbe essere già piuttosto chiaro che verranno eseguite 2 conversioni dinamiche (type1-data1 e type2-data2) che saranno comparate dall'attributo comparator1 per valutare se la condizione è rispettata. Se non è chiaro il sistema qui sotto ci sono esempi. Ora gli attributi per la seconda condizione:

type3

Converte dinamicamente data3.

data3

Riceve la conversione da type3.

comparator2

Comparatore php per la seconda condizione, quindi confronterà gli attributi type3-data3 e type4-data4.

type4

Converte dinamicamente data4.

data4

Riceve la conversione da type4.

operator

Questo attributo serve solo se vendono specificate 2 condizioni e può essere and oppure or. Se omesso il valore default sarà and. Possono anche essere in maiuscolo, quindi è possibile scriverli anche come AND e OR.

Esempi

Questo shortcode è semplice ma può essere anche facile sbagliarsi dato che ci sono attributi con nomi molto simili. Qui sotto alcuni esempi:

Iniziamo con una condizione non rispettata quindi il contenuto NON verrà generato:

[condition type1="wp" data1="title" comparator1="==" type2="string" data2="conditionn"]Condizione rispettata![/condition]

Risultato:

Ora correggiamo: la condizione è rispettata quindi il contenuto verrà generato:

[condition type1="wp" data1="title" comparator1="==" type2="string" data2="Condition"]Condizione rispettata![/condition]

Risultato: Condizione rispettata!

Ricordiamo che se non specificato l'attributo comparator la condizione non sarà calcolata, quindi ora il contenuto NON sarà generato:

[condition type1="wp" data1="title" type2="string" data2="Condition"]Condizione rispettata![/condition]

Risultato:

Ora aggiungiamo la seconda condizione, rispettiamola e generiamo il contenuto:

[condition type1="wp" data1="permalink" comparator1="==" type2="string" data2="https://www.gigitopcinformatica.it/docs/gpci-framework/shortcodes/condition/" operator="and" type3="wp" data3="title" comparator2="==" type4="string" data4="Condition"]Condizione rispettata![/condition]

Risultato: Condizione rispettata!

Gli shortcode all'interno degli attributi non funzioneranno a differenza dei controlli quindi possiamo ad esempio inserire il blocco gutenberg globals subito prima configurandolo come:

  • nome: titolo
  • valori multipli: no
  • tipo e valore: wp e title oppure stringa e [|render_data type="wp" data="title"]

Quindi avendo memorizzato la nostra variabile nella globale $GLOBALS['custom']['titolo'] faremo qualcosa come:

[condition type1="global" data1="custom,titolo" comparator1="==" type2="string" data2="Condition"]Condizione rispettata![/condition]

Risultato: Condizione rispettata!

Ora, sempre con due condizioni utilizzamo un OR:

[condition type1="wp" data1="permalink" comparator1="==" type2="string" data2="https://www.gigitopcinformatica.it/docs/gpci-framework/shortcodes/condition/" operator="OR" type3="wp" data3="title" comparator2="==" type4="string" data4="Nessun titolo"]Condizione rispettata![/condition]

Risultato: Condizione rispettata!