Support

Account

Home Forums General Issues acf_form does not get stored in revisions

Solved

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);
    }
Viewing 3 posts - 1 through 3 (of 3 total)

You must be logged in to reply to this topic.