Obtener valores de la cadena de consulta para rellenar campos ocultos en Ninja Forms

15 ago 2014, 17:39:03
Vistas: 14.2K
Votos: 0

He creado una plantilla de página personalizada donde muestro una lista de trabajos disponibles desde la base de datos.

La página que muestra los trabajos se llama jobs.

Estoy usando el plugin Ninja forms para añadir un formulario en una página llamada apply.php, que tiene campos para una solicitud de empleo.

Para cada título de trabajo mostrado en la página de trabajos, quiero que sea un enlace que el usuario pueda hacer clic para aplicar, y ser redirigido a apply.php, donde puedo capturar el ID del trabajo y guardarlo en un campo oculto en apply.php.

Esto es para que cuando guarde la solicitud del candidato, pueda asociarla con el trabajo al que aplicó.

Ya he añadido el enlace de esta manera:

?page_id=18&jid=2

donde 18 es el ID de la página de aplicación, la página que contiene el formulario de Ninja Forms.

¿Pero cómo puedo capturar el jid de la cadena de consulta y usarlo en los campos del formulario de Ninja Forms?

0
Todas las respuestas a la pregunta 2
3

Parece que puedes usar la acción ninja_forms_display_init para llenar un campo.

Para obtener el ID del trabajo desde la URL que mencionaste arriba, puedes usar el arreglo $_GET.

Adaptando el código de esa página de documentación, algo como esto debería lograr lo que buscas:

function wpse_158000_populate_field($form_id) {
    global $ninja_forms_loading;

    $job_id_field = 3; //coloca aquí el ID de tu campo oculto

    //Cambia el valor con el que se prellena un campo.
    $ninja_forms_loading->update_field_value($job_id_field, $_GET['jid']);
}

add_action('ninja_forms_display_init', 'wpse_158000_populate_field');

Su documentación enumera varias otras acciones a las que puedes vincular.

Si prefieres usar URLs más limpias, podrías enlazarte a la acción rewrite_rules_array y así podrías tener una URL más como http://www.example.com/aplicar/2 donde 2 es el ID del trabajo al que están aplicando y "aplicar" es el slug de tu página de solicitud.

También podrías llevar esto más allá y usar el slug del trabajo en lugar del ID para una URL más amigable, luego obtener el ID de ese trabajo a través del slug y añadir ese ID al valor de tu campo oculto.

15 ago 2014 18:54:02
Comentarios

Tengo una pregunta, ¿qué significan esos números aterradores en los nombres de las funciones?

user961627 user961627
15 ago 2014 19:35:26

Cuando envié el formulario, obtuve este error en la siguiente página: 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 --> esto se refiere a la última línea de la función wpse_158000_poulate_field ¿Alguna idea de por qué ocurre?

user961627 user961627
15 ago 2014 19:46:01

@eric-allen ¡Esta fue la solución! Gracias. Vaya, la documentación es pésima... no pude encontrar esta información por más que lo intenté, aunque debo admitir que soy un novato en lo que respecta a WordPress. ¡Saludos!

Volte Volte
22 jul 2015 19:47:05
1

La respuesta de @Eric Allen funcionó perfectamente.

Sin embargo, también me puse en contacto con el equipo de Ninjaforms y su solución también funcionó, así que la comparto aquí también.

Me refirieron a este enlace: http://docs.ninjaforms.com/customer/en/portal/articles/1981032-filters-ninja_forms_field?b_id=9172

Adaptándolo a mi problema, la solución fue esta:

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
Comentarios

Seguía recibiendo un error fatal de no-objeto hasta que probé esta solución. Con AFC, un pequeño ajuste lo arregló todo.

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