Wordpress - ajax-запрос к пользовательскому php-скрипту - PullRequest
0 голосов
/ 05 июня 2019

У меня проблема с формой электронной почты в Wordpress.Я создаю пользовательскую форму и добавляю jQuery-скрипт для отправки ajax-запроса.Когда я заполняю форму и нажимаю кнопку Отправить, форма возвращает мне ошибку 404. Ajax отправляет запрос на публикацию файла contact.php, но мой скрипт не может найти этот файл.

Я добавляю файл contact.php в корневой Wordpressкаталог и каталог моей темы, но у меня та же ошибка, т.е.

http://domainname/contact.php not found

Конечно, файл contact.php существует в корневом каталоге.

Мой код запроса:

function onSubmit(token) {
    $.ajax({
        url: 'contact.php',
        method: 'POST',
        data: $('#contact').serialize(),
        dataType: 'json',
        success: function(response) {
            if (response.success == true) {
                $('#contact-form').modal('hide');
            } else {
                alert(response.msg);
            }

            grecaptcha.reset();
        },
        error: function() {
            $('#form-error-modal').modal('show');

            grecaptcha.reset();
        }
    });
};

Я пробую другое решение, но все то же самое.Все работает, когда я перемещаю скрипт contact.php на внешний сервер без WordPress, но для меня это не решение.

Любая идея, как я могу решить эту проблему?

1 Ответ

0 голосов
/ 05 июня 2019

Добавить полный URL в файл, а не только contact.php. Но лучше использовать wordpres ajax

Или

function onSubmit(token) {
    $.ajax({
        url: ajax_init.ajax_url,
        method: 'POST',
        data: {
          action : 'custom_contact_form',
          form   : $('#contact').serialize()
        },
        dataType: 'json',
        success: function(response) {
            if (response.success == true) {
                $('#contact-form').modal('hide');
            } else {
                alert(response.msg);
            }
            grecaptcha.reset();
        },
        error: function() {
            $('#form-error-modal').modal('show');
            grecaptcha.reset();
        }
    });
};

в вашей функции enqueue:

  wp_localize_script('your-handle', 'ajax_init', array(
      'ajax_url' => admin_url('admin-ajax.php') 
    )
  );

здесь обрабатывается запрос

add_action('wp_ajax_custom_contact_form', 'custom_contact_form');
add_action('wp_ajax_nopriv_custom_contact_form', 'custom_contact_form'); // Allow front-end submission

function custom_contact_form() {
  $form = $_REQUEST['form'];
  parse_str($form, $post);
  // your logic here
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...