I've used ACF on the back end a good bit but I'm newer to using a front end ACF form. I have a fresh WP install for testing.
I have the form working but for some reason it is creating two duplicate records every time I submit the form. I can't find anything in the form that would submit it twice.
<?php
// Show ACF Form On Front End Via ShortCode
// Code to show form
add_action('init', 'brandpage_form_head');
function brandpage_form_head() {
acf_form_head();
}
// Function for the shortcode
function bwp_acf_form_function($attr) {
// If ACF isn't running then exit
if (!function_exists('acf_form')) {
return;
}
// Buffer data instead of outputting it
ob_start();
// Unique form ID to avoid conflicts
$form_id = 'bwp-acf-form-' . uniqid();
// Debug: Log form ID and request data
error_log('Rendering ACF Form with ID: ' . $form_id);
error_log('Request data: ' . print_r($_REQUEST, true));
// Display ACF form
acf_form(array(
'id' => $form_id,
'post_id' => 'new_post',
'new_post' => array(
'post_type' => 'daily-message',
'post_status' => 'draft',
),
'field_groups' => array($attr['field_group_id']),
'post_title' => false, // False to auto-populate
'post_content' => false, // False to not use for content
'submit_value' => __("Update", 'acf'),
'updated_message' => __("Daily Messenger Post Added", 'acf'),
'return' => '', // Redirect URL after saving (empty string means no redirect)
'html_after_fields'=> '<input type="hidden" name="my_form_nonce" value="' . wp_create_nonce('my_form_nonce_action') . '">', // Add nonce for security
));
// Empty the buffer data
return ob_get_clean();
}
// Add the shortcode
add_shortcode('bwp_acf_form', 'bwp_acf_form_function');
?>
Any ideas why this might be posting twice?
Finally found an answer on the ACF support forum and although I'm not 100% sure why it does work:
Remove the init hook and try putting acf_form_head(); inside header.php
This solved the problem.