Home › Forums › General Issues › acf_form does not get stored in revisions
Hello,
I have a front-end edit form for a custom post type that is all ACF fields. The information is saved and works.
But…
The problem is that revisions are not updated and I can only see changes made by wp-admin. All updates made in the front end form are not saved to revisions, this is important because if I give users the ability to change data on the front end, I need a way to undo it if they mess up.
This is my form, I added the post_modified to see if that helped, it didn’t
<?php
acf_form_head();
get_header(); $theDate = date('Y-m-d H:i:s');
acf_form(array(
'post_id' => $author_info->member_company,
'post_title' => false,
'post_content' => false,
'post_modified' => $theDate,
'submit_value' => __('Update Details'),
'fields' => array(
'field_5cc07946f5df9',
'field_5cc07917f5df7'
)
)); ?>
I do not know if this will work or not because I have not actually tried it. The reason that the post is not saved in revisions is that the post is not actually being updated, only the custom fields are. You need to cause WP to update the post so that it saves a revision.
What I would try is to create an acf/save_post filter. I think that you would need to do this on a priority of < 10 to that the revision is created before the fields are updated, but I am not 100% positive of this. I would try < 10 first and if that does not get the results you are looking for than try > 10
add_action('acf/save_post, 'force_revisions_save', 1);
function force_revisions_save($post_id) {
if (is_admin()) {
// not needed in admin
return;
}
$post_type = get_post_type($post_id);
if ($post_type != 'YOUR POST TYPE HERE') {
// only run on your post type
return;
}
// get the post
$post = get_post($post_id);
// remove this filter to prevent infinite loop
remove_filter('acf/save_post, 'force_revisions_save', 1);
// update the post
wp_update_post($post);
// re-add this filter
add_action('acf/save_post, 'force_revisions_save', 1);
}
You are a genius, thank you..
for anyone new looking, you are missing a couple of quotes, but it works great.. revised
add_action('acf/save_post', 'force_revisions_save', 1);
function force_revisions_save($post_id) {
if (is_admin()) {
// not needed in admin
return;
}
$post_type = get_post_type($post_id);
if ($post_type != 'YOUR POST TYPE HERE') {
// only run on your post type
return;
}
// get the post
$post = get_post($post_id);
// remove this filter to prevent infinite loop
remove_filter('acf/save_post', 'force_revisions_save', 1);
// update the post
wp_update_post($post);
// re-add this filter
add_action('acf/save_post', 'force_revisions_save', 1);
}
You must be logged in to reply to this topic.
Welcome to the Advanced Custom Fields community forum.
Browse through ideas, snippets of code, questions and answers between fellow ACF users
Helping others is a great way to earn karma, gain badges and help ACF development!
We use cookies to offer you a better browsing experience, analyze site traffic and personalize content. Read about how we use cookies and how you can control them in our Privacy Policy. If you continue to use this site, you consent to our use of cookies.