Так как не разбирался в теме - вопрос был слишком широкий.
На самом деле тут нужно было конвертировать $_POST в нормальный массив -
wp_parse_str($_POST['data'], $searcharray);
и отдать соответстующий ответ для success -
wp_send_json(array ('message'=> 'message sent','status'=> 200));
РЕШЕНИЕ:
add_action('wp_ajax_nopriv_handle_contact_form', 'my_action_callback');
add_action('wp_ajax_handle_contact_form', 'my_action_callback');
function my_action_callback() {
wp_parse_str($_POST['data'], $searcharray);
$to_mail = 'info@a358.ru';
$subject = 'Контакты';
$name = $searcharray['contact_name'];
$phone = $searcharray['contact_website'];
$email = $searcharray['contact_email'];
$message = 'Имя: ' . $name . '<br> Сайт: ' . $phone . '<br> Почта: ' . $email ;
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'From: Сообщение с сайта <info@a358.ru>' . "\r\n";
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
try{
if ( wp_mail($to_mail, $subject, $message , $headers)){
wp_send_json(array ('message'=> 'message sent','status'=> 200));
} else{
wp_send_json_error('email error');
}
}catch (Expection $e)
{
wp_send_json_error($e->getMessage());
}
wp_die();
}