This function is used to update a field value for a specific post.


<?php update_field($selector, $value, $post_id); ?>
  • $selector (string) the field name or key (required)
  • $value (mixed) the value to save (required)
  • $post_id (mixed) Specific post ID where your value was entered. Defaults to current post ID (not required). This can also be options / taxonomies / users / etc


This function will return true upon success or false upon failure.


  • If the value passed to this function is the same as the value that is already in the database, this function returns false.


Basic (field name)

This example demonstrates how to update the value of a field called ‘views’ on the current post being viewed.


// get current count value
$count = (int) get_field('views');

// increase

// update
update_field('views', $count);

Basic (field key)

This example demonstrates how to achieve the same as above using the field’s key instead of it’s name. The field’s key should be used when saving a new value to a post (when no value exists). This helps ACF create the correct ‘reference’ between the value and the field’s settings.

Each value saved in the database is given a ‘reference’ of the field’s key. This allows ACF to connect a value with it’s field. ACF does this so it can format values when loaded based of the field type and settings. For example, the image field contains a setting to return an array of image data instead of the attachment ID.


// get current count value
$count = (int) get_field('field_123456');

// increase

// update
update_field('field_123456', $count);

Update a value from different objects

This example shows a variety of $post_id values to update a value from a post, user, term and option.

$post_id = false; // current post
$post_id = 1; // post ID = 1
$post_id = "user_2"; // user ID = 2
$post_id = "category_3"; // category term ID = 3
$post_id = "event_4"; // event (custom taxonomy) term ID = 4
$post_id = "option"; // options page
$post_id = "options"; // same as above

$value = update_field( 'my_field', 'my_value', $post_id );


This example will demonstrate how to create a new post, and save multiple field values to it.


// vars
$my_post = array(
	'post_title'	=> 'My post',
	'post_type'		=> 'post',
	'post_status'	=> 'publish'

// insert the post into the database
$post_id = wp_insert_post( $my_post );

// save a basic text value
$field_key = "field_123456";
$value = "some new string";
update_field( $field_key, $value, $post_id );

// save a checkbox or select value
$field_key = "field_1234567";
$value = array("red", "blue", "yellow");
update_field( $field_key, $value, $post_id );

// save a repeater field value
$field_key = "field_12345678";
$value = array(
		"sub_field_1"	=> "Foo",
		"sub_field_2"	=> "Bar"
update_field( $field_key, $value, $post_id );

// save a flexible content field value
$field_key = "field_123456789";
$value = array(
	array( "sub_field_1" => "Foo1", "sub_field_2" => "Bar1", "acf_fc_layout" => "layout_1_name" ),
	array( "sub_field_x" => "Foo2", "sub_field_y" => "Bar2", "acf_fc_layout" => "layout_2_name" )
update_field( $field_key, $value, $post_id );



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.