• Как написать функцию обработчик для AJAX формы Wordpress?

    @arseniy_romanov Автор вопроса
    Так как не разбирался в теме - вопрос был слишком широкий.

    На самом деле тут нужно было конвертировать $_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();
    }
    Ответ написан
    Комментировать