Creare una select dinamica con Contact Form 7

CF7 WordPress Select Dinamiche
Tempo stimato di lettura: 1 minuto, 46 secondi
Pubblicato il 6 Ottobre 2017

Diciamocelo, CF7 è indubbiamente uno dei plugin più utilizzati e diffusi di WordPress per creare e gestire form in modo semplice ed efficace. A chi non è mai capitato di dover mettere mano al codice per realizzare un campo dinamico, magari popolato da valori personalizzati? In questo articolo abbiamo visto come creare un campo di testo dinamico sfruttando l’estensione di CF7, la CF7 Dynamic Text Extension, oggi invece scoprirai come creare una tendina / select / dropdown.

Dal momento che la documentazione ufficiale è piuttosto carente, troverai il codice “pronto all’uso” che dovrai adattare alle tue esigenze.

ALERT! Occorre avere delle competenze basilari di programmazione php e WordPress. Non analizzeremo infatti diverse casistiche, ma troverai un input da cui partire per adattarlo alla tua esigenza.

Lo shortcode da utilizzare

[select* fi-esecuzione data:my.data.prod_esecuzione]

Utilizza il tipo di campo select di default seguito dal nome che vuoi dargli, e che dovrai inserire nella tab “mail” dentro al corpo del messaggio per riceverne il valore, e aggiungi l’attributo data.prod_esecuzione, che permette di realizzare la magia! Dentro alla tua form non dovrai fare altro, nel file functions.php invece…

Funzione e filtro

Ti riportiamo subito il codice completo del nostro esempio. In questo caso avevamo la necessità di recuperare nella form presente in pagina un elenco di valori presenti in un custom field creato col plugin ACF, denominato prod_esecuzione.

function get_my_prod_esecuzione(){
	$choices = get_field('prod_esecuzione');
    return $choices;
}

add_filter('wpcf7_form_tag_data_option', function($n, $options, $args){
    if (in_array('my.data.prod_esecuzione', $options)){
        return get_my_prod_esecuzione();
    }
    // default - non applicare cambiamenti alle opzioni
    return null;
}, 10, 3);

Attraverso la funzione get_my_prod_esecuzione() recuperiamo quindi i valori dell’array. Attraverso l’uso del filtro successivo passiamo quei valori a CF7 laddove viene trovato nello shortcode il parametro my.data.prod_esecuzione.

In questo modo, in pochi passaggi, puoi creare facilmente una tendina dinamica con CF7 e WordPress.

E se volessi creare più campi? Niente di più semplice: dovrai creare funzioni differenti per ogni campo e richiamarle all’interno dello stesso filtro (wpcf7_form_tag_data_option).

Se hai dubbi, scrivici nei commenti!

Shares