Support

Account

Home Forums ACF PRO Hook acf/save_post not applied for all

Solved

Hook acf/save_post not applied for all

  • Hi guys,

    I have the follow code:

    
    add_action('acf/save_post', 'save_post', 20);
    
    function save_post($post_id){
      
        // Get the data from a field
        $one = get_field('one', $post_id);
        
        // Set the post data
        $new_post = array(
            'ID'           => $post_id,
            'post_title'   => $one,
        );
        
        // Remove the hook to avoid infinite loop. Please make sure that it has
        // the same priority (20)
        remove_action('acf/save_post', 'save_post', 20);
        
        // Update the post
        wp_update_post( $new_post );
        
        // Add the hook back
        add_action('acf/save_post', 'save_post', 20);
      
    }

    The problem is that I have two group of fields, one for posts and other for pages. This hook, I want just that affect to posts and not to pages, but this affect to all, posts and pages. Is there any way to condition the hook?

    I hope any help.
    Thanks!

  • You need to check for the post type you want to change inside your function

    
    add_action('acf/save_post', 'save_post', 20);
    
    function save_post($post_id){
        
        if (get_post_type($post_id) != 'post') {
          return;
        }
        // Get the data from a field
        $one = get_field('one', $post_id);
        
        // Set the post data
        $new_post = array(
            'ID'           => $post_id,
            'post_title'   => $one,
        );
        
        // Remove the hook to avoid infinite loop. Please make sure that it has
        // the same priority (20)
        remove_action('acf/save_post', 'save_post', 20);
        
        // Update the post
        wp_update_post( $new_post );
        
        // Add the hook back
        add_action('acf/save_post', 'save_post', 20);
      
    }
    
  • That works!
    Thanks John 🙂

  • Hi Guys, but this solution only work if i press save in the backend… Not @Heartbeat from WordPress… Any solution?!

  • ACF fields are not save during an autosave. Autosave is a core WP feature and no custom fields are saved or sent to the server when it is run. As far as I know there are not solutions to this, at least I have not been able to find any. see also https://support.advancedcustomfields.com/forums/topic/saving-acf-properties-when-wp-runs-auto-save-2/

  • soRailicious, at least, for me this solution worked. The autosave or drafts aren’t affected.
    Did you tested this solution?

Viewing 6 posts - 1 through 6 (of 6 total)

You must be logged in to reply to this topic.