Cum să prelucrezi valori din query string pentru a completa câmpuri ascunse în formularele Ninja Forms

15 aug. 2014, 17:39:03
Vizualizări: 14.2K
Voturi: 0

Am creat un șablon de pagină personalizat unde afișez o listă de joburi disponibile din baza de date.

Pagina care afișează joburile se numește jobs.

Folosesc plugin-ul Ninja forms pentru a adăuga un formular pe o pagină numită apply.php, care conține câmpuri pentru aplicarea la job.

Pentru fiecare titlu de job afișat pe pagina jobs, vreau să fie un link pe care utilizatorul să poată face click pentru a aplica și să fie redirecționat către apply.php, unde pot prelua ID-ul jobului și să-l salvez într-un câmp ascuns pe apply.php.

Acest lucru este necesar pentru ca atunci când salvez aplicația candidatului, să pot asocia jobul pentru care a aplicat.

Am adăugat link-ul corect - astfel:

?page_id=18&jid=2

unde 18 este ID-ul paginii de aplicare, pagina pe care am plasat formularul Ninja Forms.

Dar cum pot prelua parametrul jid din query string și să-l folosesc în câmpurile formularului Ninja Forms?

0
Toate răspunsurile la întrebare 2
3

Se pare că poți folosi acțiunea ninja_forms_display_init pentru a popula un câmp.

Pentru a obține ID-ul jobului din URL-ul menționat mai sus, poți folosi array-ul $_GET.

Adaptând codul de pe pagina respectivă de documentație, ceva de genul acesta ar trebui să realizeze ceea ce cauți:

function wpse_158000_populate_field($form_id) {
    global $ninja_forms_loading;

    $job_id_field = 3; //introdu aici ID-ul pentru câmpul tău ascuns

    //Modifică valoarea cu care este pre-populat un câmp.
    $ninja_forms_loading->update_field_value($job_id_field, $_GET['jid']);
}

add_action('ninja_forms_display_init', 'wpse_158000_populate_field');

În documentația lor sunt enumerate o serie de alte acțiuni în care te poți conecta.

Dacă preferi să folosești URL-uri mai curate, poți să te conectezi la acțiunea rewrite_rules_array și poți avea un URL de genul http://www.example.com/aplica/2, unde 2 este ID-ul jobului pentru care aplică, iar "aplica" este slug-ul paginii tale de aplicare.

Poți merge și mai departe și folosi slug-ul pentru acel job în loc de ID pentru un URL mai frumos, apoi să obții ID-ul pentru acel job prin slug și să adaugi acel ID la valoarea câmpului tău ascuns.

15 aug. 2014 18:54:02
Comentarii

Am o întrebare, ce înseamnă aceste numere înfricoșătoare din numele funcțiilor?

user961627 user961627
15 aug. 2014 19:35:26

Când am trimis formularul, am primit această eroare pe pagina următoare: 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 --> aceasta se referă la ultima linie din funcția wpse_158000_poulate_field Ai vreo idee de ce?

user961627 user961627
15 aug. 2014 19:46:01

@eric-allen Aceasta a fost soluția! Mulțumesc. Doamne, documentația e groaznică... nu am putut găsi această informație nici mort, dar recunosc că sunt începător când vine vorba de WordPress. Noroc!

Volte Volte
22 iul. 2015 19:47:05
1

Răspunsul lui @Eric Allen a funcționat perfect.

Cu toate acestea, am luat legătura și cu echipa de la Ninjaforms, iar răspunsul lor a funcționat de asemenea, așa că îl postez și aici.

Ei m-au trimis la această referință: http://docs.ninjaforms.com/customer/en/portal/articles/1981032-filters-ninja_forms_field?b_id=9172

Adaptând-o la problema mea, soluția a fost următoarea:

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 aug. 2014 19:35:07
Comentarii

Am tot primit o eroare fatală de non-object până când am încercat această soluție. Cu AFC, o mică modificare a rezolvat totul.

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