Recupera valori dalla query string per riempire campi nascosti in Ninja Forms
Ho creato un template di pagina personalizzato dove estraggo un elenco di lavori disponibili dal database.
La pagina che mostra i lavori si chiama jobs
.
Sto usando il plugin Ninja forms
per aggiungere un modulo su una pagina chiamata apply.php
, che contiene i campi per la candidatura al lavoro.
Per ogni posizione lavorativa mostrata nella pagina jobs, voglio che sia presente un link cliccabile dall'utente per candidarsi, reindirizzando a apply.php
, dove posso recuperare l'ID del lavoro e salvarlo in un campo nascosto su apply.php
.
In questo modo, quando salvo la candidatura, posso associarla al lavoro specifico a cui l'utente si è candidato.
Ho già aggiunto il link nel seguente modo:
?page_id=18&jid=2
dove 18 è l'ID della pagina di candidatura, quella che contiene il modulo Ninja.
Ma come posso recuperare il parametro jid dalla query string e usarlo nei campi del modulo Ninja?

Sembra che tu possa utilizzare l'azione ninja_forms_display_init
per popolare un campo.
Per ottenere l'ID del lavoro dall'URL che hai menzionato, puoi utilizzare l'array $_GET
.
Adattando il codice da quella pagina di documentazione, qualcosa come questo dovrebbe ottenere ciò che stai cercando:
function wpse_158000_populate_field($form_id) {
global $ninja_forms_loading;
$job_id_field = 3; //inserisci qui l'ID del tuo campo nascosto
//Modifica il valore con cui un campo viene pre-compilato.
$ninja_forms_loading->update_field_value($job_id_field, $_GET['jid']);
}
add_action('ninja_forms_display_init', 'wpse_158000_populate_field');
La loro documentazione elenca una serie di altre azioni a cui puoi collegarti.
Se preferisci utilizzare URL più puliti, potresti volerti collegare all'azione rewrite_rules_array
e quindi avere un URL più simile a http://www.example.com/apply/2 dove 2 è l'ID del lavoro per cui si stanno candidando e "apply" è lo slug della tua pagina di applicazione.
Potresti anche spingerti oltre e utilizzare lo slug per quel lavoro invece dell'ID per un URL più gradevole, quindi ottenere l'ID per quel lavoro tramite lo slug e aggiungere quell'ID al valore del tuo campo nascosto.

Ho una domanda, cosa significano questi numeri spaventosi nei nomi delle funzioni?

Quando ho inviato il modulo, ho ricevuto questo errore nella pagina successiva: Fatal error: Call to a member function update_field_value() on a non-object in C:\xampp\htdocs\xampp\wordpress\wp-content\plugins\custom-query-vars.php on line 38
--> questo si riferisce all'ultima riga nella funzione wpse_158000_poulate_field
Hai idea del perché?

La risposta di @Eric Allen ha funzionato perfettamente.
Tuttavia, mi sono anche messo in contatto con il team di Ninjaforms e la loro soluzione ha funzionato altrettanto bene, quindi la condivido qui.
Mi hanno indirizzato a questo link: http://docs.ninjaforms.com/customer/en/portal/articles/1981032-filters-ninja_forms_field?b_id=9172
Adattandolo al mio problema, la soluzione è stata questa:
function filter_fetch_jid( $data, $field_id ){
if( $field_id == 27 ){
$job_id = $job_id = $_REQUEST['jid'];
$data['default_value'] = $job_id ;
}
return $data;
}
add_filter( 'ninja_forms_field', 'filter_fetch_jid', 10, 27);

Continuavo a ricevere un errore fatale di non-oggetto finché non ho provato questa soluzione. Con AFC, un piccolo aggiustamento ha risolto tutto.
function filter_fetch_jid( $data, $field_id ){
if( $field_id == 21 ){ global $post; $agent_email = get_field('email_address', $post->ID); $data['default_value'] = $agent_email ; } return $data; }
add_filter( 'ninja_forms_field', 'filter_fetch_jid', 10, 27);
?>
