Как реализовать форму добавления кастомного типа записи на странице сайта?
Здравствуйте! На странице сайта нужно добавить форму добавления кастомного типа записи. Сама кастомная запись уже создана, также как и зарегистрированны таксономии и созданы поля при помощи ACF. Помогите с направлением, не знаю как начать и что делать.... Плюс, это должно быть реализовано ajaxом
Дополнительно:
Я правильно понял - тебе нужно возможность добавление записей кастомного типа с фронта? Или что?
Ответы:
Помогите с направлением, не знаю как начать и что делать....
Есть масса плагинов для постинга с фронта.
Искать так, так и тп.
Но работа с кастомными сущностями как правило в платных версиях.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Форму добавления кастомного типа записи на фронте лучше делать через обычную HTML-форму, nonce-проверку и
wp_insert_post(). ACF-поля и таксономии можно заполнить после создания записи.Минимальная схема:
initилиtemplate_redirectобрабатываете POST;pendingилиdraft;Пример обработки:
add_action('template_redirect', function () { if (empty($_POST['frontend_cpt_submit'])) { return; } if ( empty($_POST['_wpnonce']) || !wp_verify_nonce($_POST['_wpnonce'], 'frontend_cpt_create') ) { wp_die('Ошибка безопасности формы'); } $post_id = wp_insert_post([ 'post_type' => 'my_cpt', 'post_status' => 'pending', 'post_title' => sanitize_text_field($_POST['title'] ?? ''), 'post_content' => wp_kses_post($_POST['content'] ?? ''), ], true); if (is_wp_error($post_id)) { wp_die($post_id->get_error_message()); } if (!empty($_POST['my_tax'])) { wp_set_object_terms($post_id, [(int) $_POST['my_tax']], 'my_taxonomy'); } if (function_exists('update_field')) { update_field('field_name', sanitize_text_field($_POST['acf_value'] ?? ''), $post_id); } wp_safe_redirect(add_query_arg('created', '1', wp_get_referer())); exit; });
Файлы и изображения обрабатываются отдельно через
media_handle_upload(). Не давайте всем подряд публиковать сразу вpublish, если нет модерации. Для публичной формы лучше использоватьpending.Не выводите поля ACF на фронте “как есть”, если форма доступна гостям. Даже если поле выглядит безобидно, его нужно очищать под тип данных: текст через
sanitize_text_field(), HTML через ограниченныйwp_kses(), числа через приведение кintилиfloat. Иначе через форму можно занести мусорную разметку или опасный HTML.Итог: начинайте не с ACF, а с безопасного создания записи. Когда запись создана, к ней уже можно прикрепить термины, ACF-поля, изображения и дополнительные метаданные. Для первого запуска делайте статус
pending, проверяйте nonce и после успешной отправки всегда делайте redirect.