Automatically fill custom field value on post publish/update

I’ve searched around a bit, and I’m having trouble finding an answer to this question. What I’m trying to do is automatically fill a custom field when a post (custom post type) is updated or published. Ideally the completed script will call out to an API and fill the custom field with the resulting information whenever a post is created or updated. For right now though, I’m just trying to automatically fill my custom field with a simple string for testing. Here’s my code:

add_action( 'save_post', 'update_tmv' );
function update_tmv($postid) {
    if ( !wp_is_post_revision( $postid ) && get_post_type( $postid ) == 'inventory') {
        $field_name = 'market_value';
        add_post_meta($postid, $field_name, 'TEST_STRING', true);    
    }
}

I’ve used this page as reference: http://www.wpbeginner.com/wp-tutorials/how-to-add-custom-fields-automatically-on-post-publish-in-wordpress/ but unfortunately it’s not working. When I publish or save a post the ‘market_value’ custom field continues to be empty (also, I’m using Advanced Custom Fields to create the custom fields). Any ideas? Thanks!

Solutions Collecting From Web of "Automatically fill custom field value on post publish/update"

See add_meta_box which has a lot of demo code for working with meta fields. Here is the most relevant part for you:

/* Do something with the data entered */
add_action( 'save_post', 'myplugin_save_postdata' );

/* When the post is saved, saves our custom data */
function myplugin_save_postdata( $post_id ) {

  // First we need to check if the current user is authorised to do this action. 
  if ( 'page' == $_POST['post_type'] ) {
    if ( ! current_user_can( 'edit_page', $post_id ) )
        return;
  } else {
    if ( ! current_user_can( 'edit_post', $post_id ) )
        return;
  }

  $mydata = 'something'; // Do something with $mydata 

  update_post_meta( $post_id, '_my_meta_value_key', $mydata );
}