Recupera valori dalla query string per riempire campi nascosti in Ninja Forms

15 ago 2014, 17:39:03
Visualizzazioni: 14.2K
Voti: 0

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?

0
Tutte le risposte alla domanda 2
3

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.

15 ago 2014 18:54:02
Commenti

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

user961627 user961627
15 ago 2014 19:35:26

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é?

user961627 user961627
15 ago 2014 19:46:01

@eric-allen Questa era la soluzione! Grazie. Cavolo, la documentazione fa schifo... non riuscivo a trovare questa informazione per nulla al mondo, ma ammetto di essere un principiante quando si tratta di WordPress. Saluti!

Volte Volte
22 lug 2015 19:47:05
1

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);
15 ago 2014 19:35:07
Commenti

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);

?>

Faye Faye
27 nov 2015 20:01:08