Получение значений из строки запроса для заполнения скрытых полей в Ninja Forms
Я создал пользовательский шаблон страницы, где вывожу список доступных вакансий из базы данных.
Страница с вакансиями называется 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?

Похоже, вы можете использовать действие 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 в значение вашего скрытого поля.

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

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

Ответ @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);

Постоянно получал фатальную ошибку 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);
?>
