Nel wordpress Gpci framework è presente in varie zone un sistema per comparare 2 valori e generare contenuti in base al risultato della comparazione. Solitamente è associato alla conversione dinamica per massimizzare la flessibilità delle opzioni. Anche in questo caso abbiamo nel backend un selettore che contiene tutte i comparatori, mentre nel frontend verrà valutato il risultato tramite php.
Comparatori
Proprio come nella conversione dinamica i comparatori sono di 2 tipi: predefiniti (la maggior parte dei comparatori php) e personalizzati per poterne quindi definire di propri secondo l'utilizzo. E' importante sapere che quando è presente una comparazione la condizione sarà inizialmente sempre impostata come NON rispettata, sarà poi compito della funzione di comparazione di impostarla eventualmente come rispettata. I comparatori predefiniti sono:
== (uguale)
La comparazione sarà rispettata se i due valori sono uguali senza bisogno di verificare il tipo dei valori. Esempio: una stringa 11 è uguale a un numero 11.
=== (uguale e stesso tipo)
La comparazione sarà rispettata se i due valori sono uguali e anche dello stesso tipo (esempio due numeri). Esempio: una stringa 11 NON è uguale a un numero 11.
!= (non uguale)
La comparazione sarà rispettata se i due valori non sono uguali.
!== (non identico)
La comparazione sarà rispettata se i due valori non sono uguali ma anche se non sono dello stesso tipo.
< (minore)
La comparazione sarà rispettata se il primo valore è minore del secondo. Probabilmente sarà utilizzata tra due numeri.
<= (minore o uguale)
La comparazione sarà rispettata se il primo valore è minore o uguale al secondo. Probabilmente sarà utilizzata tra due numeri.
> (maggiore)
La comparazione sarà rispettata se il primo valore è maggiore del secondo. Probabilmente sarà utilizzata tra due numeri.
>= (maggiore o uguale)
La comparazione sarà rispettata se il primo valore è maggiore o uguale al secondo. Probabilmente sarà utilizzata tra due numeri.
Comparatori personalizzati
Esattamente come nella conversione dinamica è possibile creare delle comparazioni personalizzate tramite php, che saranno valutate soltanto dopo le altre. Evitare quindi di utilizzare gli stessi valori visti sopra, come ==, !=, ecc... La globale php è $GLOBALS['gpci']['dynamic_conversion']['comparators']['custom'] e viene definita nel seguente formato di esempio:
$GLOBALS['gpci']['dynamic_conversion']['comparators']['custom']['str_contains'] = [
'label' => 'Valore 1 contiene valore 2',
'function' => function( $value1, $value2 ){ return str_contains( $value1, $value2 ); }
];
La funzione dovrà probabilmente, ma non obbligatoriamente, avere in ingresso tutti e 2 i valori (che arriveranno alla funzione già convertiti dinamicamente). Notare che per il momento non è possibile aggiungere un helper ai controlli, sarà aggiunto in un secondo momento (per ora utilizzare la label).
