Знать бы - я ошибаюсь в коде или очередная опечатка. Оно переходит при клике на
site-name.com/wp-admin/admin-ajax.php?action=send_mail, но белый экран. В консоли Unchecked runtime.lastError: The message port closed before a response was received.
site-name.com/wp-admin/admin-ajax.php?action=send_mail
HTML формы:
<form id="pp_booking_form" method="post" action="<?php echo admin_url('admin-ajax.php?action=send_mail') ?>" >
<input type="hidden" id="action" name="action" value="pp_booking_mailer">
<input type="hidden" id="tour_title" name="tour_title" value="East Europe">
<input type="hidden" id="tour_url" name="tour_url" value="index.php">
<div class="one_half">
<label for="first_name">First Name</label>
<input id="first_name" name="first_name" type="text" class="required_field" required>
</div>
<div class="one_half last">
<label for="last_name">Last Name</label>
<input id="last_name" name="last_name" type="text" class="required_field" required>
</div>
<br class="clear">
<br>
<div class="one_half">
<label for="email">Email</label>
<input id="email" name="email" type="text" class="required_field" required>
</div>
<div class="one_half last">
<label for="phone">Phone</label>
<input id="phone" name="phone" type="text">
</div>
<br class="clear">
<br>
<div class="one">
<label for="message">Additional Message</label>
<textarea id="message" name="message" rows="7" cols="10" required></textarea>
</div>
<br class="clear">
<div class="one">
<p>
<input id="booking_submit_btn" type="submit" value="Book By Email">
</p>
</div>
</form>
JQuery
jQuery(document).ready(function($) {
var form = $('#pp_booking_form');
var action = form.attr('action');
form.on('submit', function(event) {
var formData = {
first_name: $('#first_name').val(),
last_name: $('#last_name').val(),
email: $('#email').val(),
phone: $('#phone').val(),
message: $('#message').val()
};
$.ajax({
url: action,
type: 'POST',
data: formData,
error: function() {
form.html("Ваш тур не забронирован");
};
sussess: function() {
form.html("Ваш тур забронирован");
}
});
event.preventDefault();
});
});
В functions.php подключается так
wp_enqueue_script( 'form_js', get_template_directory_uri() . '/assets/js/form.js', null, ['jquery'], true);
Ниже в том же файле функций это:
add_action( 'wp_ajax_send_mail', 'send_mail' );
add_action( 'wp_ajax_nopriv_send_mail', 'send_mail' );
function send_mail() {
$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$message = $_POST['message'];
$to = get_option( 'admin_email');
$subject = 'Письмо без темы';
remove_all_filters( 'wp_mail_from');
remove_all_filters( 'wp_mail_from_name' );
$headers = array(
'From: Me Myself <me@example.net>',
'content-type: text/html',
'Cc: John Q Codex <jqc@wordpress.org>',
'Cc: iluvwp@wordpress.org', // тут можно использовать только простой email адрес
);
wp_mail( $to, $subject, $message, $headers );
wp_die();
};
Верстал не я, и на самом деле я не знаю что значат эти поля
<input type="hidden" id="action" name="action" value="pp_booking_mailer">
<input type="hidden" id="tour_title" name="tour_title" value="East Europe">
<input type="hidden" id="tour_url" name="tour_url" value="index.php">
Но даже если их закомментировать, то белый экран.
Помогите разобраться пожалуйста!