Support

Account

Home Forums Front-end Issues How Update a post in front-end with acf (acf_form)

Solved

How Update a post in front-end with acf (acf_form)

  • Hey,
    My snippet works properly when I want to create the post, I just can’t update the created post. I can’t understand how to update the post with acf_form action in the front end, thanks for your help.

    std-update.php

    acf_form(array(
         'post_id'		=> '',
         'field_groups'	=> array( 19250 ),
         'post_title'	=> false,
         'updated_message' => __("Post updated", 'acf'),
         'submit_value'	=> 'Send',
         'return' => ''
      ));

    function.php

    	function register_update_std_profile( $post_id )
    	{
    	    if( $post_id == 'new_post' ) {
    	        // Create a new post
    	        $post = array(
    	            'post_title' => $_POST['fields']['field_123456'],
    	            'post_type'  => 'students_profile',
    							'post_status'	=> 'publish'
    	        );
    
    	        // insert the post
    	        $post_id = wp_insert_post( $post );
    
    	        return $post_id;
    	    }
    	    else {
    	        return $post_id;
    	    }
    	}
    	add_filter('acf/save_post' , 'register_update_std_profile');
  • In the acf_form() call you need to provide the post ID of the post that needs to be edited.

    
    if (some condition) {
      // the if needs to detect if a post is being edited
      // if it is then set $post_id to the post to be edited
      $post_id = $post=>ID; // something like this
    } else {
      // otherwise this is a new post
      $post_id = 'new_post';
    }
    
    acf_form(array(
         'post_id'		=> $post_id,
         'field_groups'	=> array( 19250 ),
         'post_title'	=> false,
         'updated_message' => __("Post updated", 'acf'),
         'submit_value'	=> 'Send',
         'return' => ''
      ));
    
  • Thank you, John
    It’s my crazy to forgot to use the acf_form() in a while loop to update a specific post, also you’re right I forgot to pass the post ID to the action too.
    Here is my complete code to update a specific post:

    while ( $author_posts->have_posts() ) : $author_posts->the_post();
    
        acf_form(array(
            'post_id'       => get_the_ID(),
            'field_groups'	=> array( 15 ),
            'post_title'    => false,
            'post_content'  => false,
            'submit_value'  => __('Update meta')
        ));
        endwhile;
Viewing 3 posts - 1 through 3 (of 3 total)

You must be logged in to reply to this topic.

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 Cookie Policy. If you continue to use this site, you consent to our use of cookies.