Прежде всего, вам нужно внести некоторые изменения в HTML и javascript и добавить несколько PHP кодов:
1) Изменить тег формы
<form id="form" method="post" action="">
2) Добавить скрытое поле в форму с именем действия
<input type="hidden" name="action" value="my_form_submission">
3) добавить ajaxurl в функции. php файл, где у вас есть поставьте в очередь ваш js файл
add_action( 'wp_enqueue_scripts', 'your function' );
function enqueue_my_frontend_script() {
wp_enqueue_script( 'my-script', plugin_dir_url(__FILE__).'frontend-scripts.js', array('jquery'), null, true );
$variables = array(
'ajaxurl' => admin_url( 'admin-ajax.php' )
);
wp_localize_script('my-script', "jsObj", $variables);
}
4) В вашем ajax вызове измените это
$.ajax({
type: "POST",
url: jsObj.ajaxurl, // this will get ajax url
data: $( "#form" ).serialize() , // send your form data with serialize mode
success: function(html) {
alert(html);
}
});
4) Добавьте ajax действий в функции темы. php файл :
add_action('wp_ajax_my_form_submission', 'my_form_submission_callback');
add_action('wp_ajax_nopriv_my_form_submission', 'my_form_submission_callback');
function my_form_submission_callback(){
$data = $_POST;
$html = $_POST['message'];
$headers = array('Content-Type: text/html; charset=UTF-8');
wp_mail("toemail@gmail.com", "Some subject", $html, $headers);
}
Таким образом, вы можете получить ajax данные и передать html функцию wp_mail ().
Проверить эту ссылку для всей демонстрации: https://dev.to/shwetadanej/ajax-calls-in-wordpress-front-end-2g09