Получение значений из строки запроса для заполнения скрытых полей в Ninja Forms

15 авг. 2014 г., 17:39:03
Просмотры: 14.2K
Голосов: 0

Я создал пользовательский шаблон страницы, где вывожу список доступных вакансий из базы данных.

Страница с вакансиями называется jobs.

Я использую плагин Ninja Forms для добавления формы на странице apply.php, которая содержит поля заявки на вакансию.

Для каждого заголовка вакансии на странице jobs я хочу сделать ссылку, по которой пользователь может перейти на apply.php, где я смогу получить ID вакансии и сохранить его в скрытом поле на apply.php.

Это нужно, чтобы при сохранении заявки я мог связать её с конкретной вакансией.

Я уже добавил ссылку следующим образом:

?page_id=18&jid=2

где 18 — это ID страницы с формой (apply.php), на которой находится форма Ninja Forms.

Но как мне получить параметр jid из строки запроса и использовать его в полях формы Ninja Forms?

0
Все ответы на вопрос 2
3

Похоже, вы можете использовать действие ninja_forms_display_init для заполнения поля.

Чтобы получить ID вакансии из URL, который вы упомянули выше, можно использовать массив $_GET.

Адаптируя код с той страницы документации, что-то вроде этого должно сработать:

function wpse_158000_populate_field($form_id) {
    global $ninja_forms_loading;

    $job_id_field = 3; // укажите здесь ID вашего скрытого поля

    // Изменяем значение, которым предварительно заполняется поле.
    $ninja_forms_loading->update_field_value($job_id_field, $_GET['jid']);
}

add_action('ninja_forms_display_init', 'wpse_158000_populate_field');

Их документация перечисляет ряд других действий, к которым можно подключиться.

Если вы предпочитаете использовать чистые URL, возможно, вам стоит подключиться к действию rewrite_rules_array, тогда у вас может быть URL вида http://www.example.com/apply/2, где 2 — это ID вакансии, на которую подается заявка, а apply — это slug страницы подачи заявки.

Вы также можете пойти дальше и использовать slug вакансии вместо ID для более красивого URL, затем получить ID этой вакансии по slug и добавить этот ID в значение вашего скрытого поля.

15 авг. 2014 г. 18:54:02
Комментарии

У меня вопрос, что означают эти страшные цифры в названиях функций?

user961627 user961627
15 авг. 2014 г. 19:35:26

Когда я отправил форму, на следующей странице получил эту ошибку: 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 --> это относится к последней строке в функции wpse_158000_poulate_field. Есть идеи, почему?

user961627 user961627
15 авг. 2014 г. 19:46:01

@eric-allen Это было решением! Спасибо. Чёрт, документация отстой... я никак не мог найти эту информацию, хотя, признаюсь, я новичок в WordPress. Ура!

Volte Volte
22 июл. 2015 г. 19:47:05
1

Ответ @Eric Allen сработал идеально.

Однако я также связался с разработчиками Ninjaforms, и их решение тоже сработало, поэтому публикую его здесь.

Они указали мне на это: http://docs.ninjaforms.com/customer/en/portal/articles/1981032-filters-ninja_forms_field?b_id=9172

Адаптируя это к моей проблеме, решение было таким:

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 авг. 2014 г. 19:35:07
Комментарии

Постоянно получал фатальную ошибку non-object, пока не попробовал это решение. С AFC небольшое изменение исправило всё.

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 нояб. 2015 г. 20:01:08