Dzvonkevich
@Dzvonkevich
Wordpress & Frontend разработчик

{Wordpress} Как после отправки формы, создать запись на основе заполненных данных?

Вот код отправки формы. Он вызывается аяксом.

<?php
    $to = 'example@gmail.com'; адресов
    $subject = 'Заголовок'; 
    $message = '
            <html>
                <head>
                    <title>' . $subject . '</title>
                </head>
                <body>
                    <p>Имя: ' . $_POST['invoice-name'] . '<br />
                    Геолокация: ' . $_POST['invoice-city'] . '<br />
                    Программа интересует: ' . $_POST['invoice-msg'] . '<br />
                    Телефон: ' . $_POST['invoice-tel'] . '<br />
                    Эл. почта: ' . $_POST['invoice-email'] . '</p>                        
                </body>
            </html>';
    $headers  = "Content-type: text/html; charset=utf-8 \r\n"; 
    $headers .= "From: JoyFans <no-reply@joyfans.ru> \r\n"; 
    mail($to, $subject, $message, $headers);

    return 200;
?>


Суть вопроса:
У меня есть произвольный тип постов, например customers, к нему подвязаны произвольные поля через ACF.
Мне нужно чтобы после отправки формы, создавалась новая запись и в произвольные поля заполнились данные формы. ХЭЛП
  • Вопрос задан
  • 249 просмотров
Решения вопроса 1
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
Во-первых, зачем вы пишете полностью произвольную отправку, если у WordPress есть wp_mail()?
Схема такая:
1. Аяксом вы должны отправлять форму на admin-ajax.php (гуглите ajax in WordPress)
2. У вас должен быть свой коллбек/обработчик на хуках wp_ajax_{action} и wp_ajax_nopriv_{action}
3. В обработчике валидируете данные (нельзя же просто тулить $_POST['var'] без проверки)
4. После валидации отправляете письмо с помощью wp_mail()
5. И создаете новую запись с помощью wp_insert_post()
6. После создания записи у вас есть ее ID, добавляете нужные метаданные через АПИ ACF
7. Возвращаете что нужно в браузер
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы