Всем добрый вечер, изучаю wordpress и взял код из проекта для обучения. Есть страница add_applicant.php, на этой странице расположена форма:
<form id="add_applicant">
<?php wp_nonce_field( 'add_applicant', 'add_applicant_nonce'); ?>
<input type="hidden" name="action" value="add_applicant"/>
<label class="form__label mb-3">
<span><?php _e('ФИО*:', 'dobro'); ?></span>
<input type="text" name="title" class="form__field" require/>
</label>
<label class="form__label mb-3">
<span><?php _e('E-mail:', 'dobro'); ?></span>
<input type="text" name="mail" class="form__field"/>
</label>
<label class="form__label mb-3">
<span><?php _e('телефон:', 'dobro'); ?></span>
<input type="text" name="phone" class="form__field"/>
</label>
<label>
<input type="checkbox" name="acceptance_privacy"/>
<?php
_e(
'Даю согласие РГООИ "Надежда"на обработку персональных данных, указанных в анкете. С политикой обработки персональных данных можно ознакомиться на сайте <a href="https://rgooi-nadezhda.ru/politika-obrabotki-personalnyh-dannyh/" target="_blank">rgooi-nadezhda.ru</a>.',
'dobro'
);
?>
</label>
<label>
<input type="checkbox" name="acceptance_public"/>
<?php
_e(
'Заполняя анкету регистрации, даю согласие РГООИ "Надежда" на фото- и -видеофиксацию мероприятий с моим участием и публикацию материалов в открытых Интернет-источниках организаторов и их партнёров.',
'dobro'
);
?>
</label>
<button type="submit" class="button button--loadable mt-4 mx-auto" disabled>
<span class="spinner-border spinner-border-sm mr-2" role="status">
<span class="sr-only"><?php _e('Загрузка...', 'dobro'); ?></span>
</span>
<?php _e('Создать Заявителя', 'dobro'); ?>
</button>
<div id="error" class="form__result form__result--error mt-3"></div>
<div id="success" class="form__result form__result--success mt-3">
<?php
_e(
'Вы создали Заявителя.',
'dobro'
);
?>
</div>
</form>
....конец файла
<?php
wp_enqueue_script('add_applicant');
get_footer();
И js скрипт add_applicant.js
$(document).ready(function () {
const $form = $('#add_applicant');
const $submit = $('#add_applicant [type="submit"]');
const $acceptancePrivacy = $('input[name="acceptance_privacy"]');
const $acceptancePublic = $('input[name="acceptance_public"]');
const $error = $('#error');
const $success = $('#success');
/**
* Disabled submit button handler
*/
function disabledSubmitHandler() {
if ($acceptancePrivacy.prop('checked') && $acceptancePublic.prop('checked')) {
$submit.prop('disabled', false);
} else {
$submit.prop('disabled', true);
}
}
/**
* Clear form
*/
function clearForm() {
$success.removeClass('d-block');
$error.removeClass('d-block');
$submit.prop('disabled', true);
}
/**
* Send form to add applicant
*
* @param {string} recaptchaToken current recaptcha token
* @returns void
*/
function sendForm(recaptchaToken) {
const formData = new FormData($('#add_applicant')[0]);
formData.append('recaptcha_token', recaptchaToken);
$submit.addClass('button--loading');
console.log(formData)
// check require fields
if ($form.find('[require]').filter(function () { return this.value === '' }).length > 0) {
$error.html('Каккое-то поле не заполнено');
$error.addClass('d-block');
$submit.prop('disabled', false);
$submit.removeClass('button--loading');
return;
}
$.ajax({
url: globalVariables.ajaxUrl,
type: 'POST',
data: formData,
processData: false,
contentType: false,
success: function () {
console.log(data)
$success.addClass('d-block');
$submit.prop('disabled', false);
$submit.removeClass('button--loading');
},
error: function (data) {
const response = JSON.parse(data);
$error.html(response.data);
$error.addClass('d-block');
$submit.prop('disabled', false);
$submit.removeClass('button--loading');
},
});
}
// add acceptance handlers
$acceptancePrivacy.on('change', disabledSubmitHandler);
$acceptancePublic.on('change', disabledSubmitHandler);
// add google recaptch handler befor send form
$form.on('submit', function (e) {
e.preventDefault();
clearForm();
grecaptcha.ready(function () {
grecaptcha.execute(
globalVariables.recaptchaSiteKey,
{ action: 'submit' },
).then(sendForm);
});
});
});
Я зарегистрировал пост:
register_post_type('applicant', array(
'labels' => array(
'name' => 'Заявители',
'singular_name' => 'Заявитель',
'menu_name' => 'Заявители',
'all_items' => 'Все заявители',
'add_new' => 'Добавить заявителя',
'add_new_item' => 'Добавить нового заявителя',
'edit' => 'Редактировать',
'edit_item' => 'Редактировать заявителя',
'new_item' => 'Новый заявитель',
),
'label' => 'Заявитель',
'menu_icon' => 'dashicons-groups',
'public' => true,
'supports' => array('title'),
));
Далее у меня вопрос что мне необходимо сделать что бы при нажатии на кнопку Создать заявителя у меня появлялся новый заявитель в базе. Этот код выдает ошибку ajax не могу понять в чем дело. Как эти данные передать в php скрипт для дальнейшей обработки?