Title: wp_autosave_post_revisioned_meta_fields
Published: November 8, 2023
Last modified: February 24, 2026

---

# wp_autosave_post_revisioned_meta_fields( array $new_autosave )

## In this article

 * [Description](https://developer.wordpress.org/reference/functions/wp_autosave_post_revisioned_meta_fields/?output_format=md#description)
 * [Parameters](https://developer.wordpress.org/reference/functions/wp_autosave_post_revisioned_meta_fields/?output_format=md#parameters)
 * [Source](https://developer.wordpress.org/reference/functions/wp_autosave_post_revisioned_meta_fields/?output_format=md#source)
 * [Related](https://developer.wordpress.org/reference/functions/wp_autosave_post_revisioned_meta_fields/?output_format=md#related)
 * [Changelog](https://developer.wordpress.org/reference/functions/wp_autosave_post_revisioned_meta_fields/?output_format=md#changelog)

[ Back to top](https://developer.wordpress.org/reference/functions/wp_autosave_post_revisioned_meta_fields/?output_format=md#wp--skip-link--target)

Autosaves the revisioned meta fields.

## 󠀁[Description](https://developer.wordpress.org/reference/functions/wp_autosave_post_revisioned_meta_fields/?output_format=md#description)󠁿

Iterates through the revisioned meta fields and checks each to see if they are set,
and have a changed value. If so, the meta value is saved and attached to the autosave.

## 󠀁[Parameters](https://developer.wordpress.org/reference/functions/wp_autosave_post_revisioned_meta_fields/?output_format=md#parameters)󠁿

 `$new_autosave`arrayrequired

The new post data being autosaved.

## 󠀁[Source](https://developer.wordpress.org/reference/functions/wp_autosave_post_revisioned_meta_fields/?output_format=md#source)󠁿

    ```php
    function wp_autosave_post_revisioned_meta_fields( $new_autosave ) {
    	/*
    	 * The post data arrives as either $_POST['data']['wp_autosave'] or the $_POST
    	 * itself. This sets $posted_data to the correct variable.
    	 *
    	 * Ignoring sanitization to avoid altering meta. Ignoring the nonce check because
    	 * this is hooked on inner core hooks where a valid nonce was already checked.
    	 */
    	$posted_data = isset( $_POST['data']['wp_autosave'] ) ? $_POST['data']['wp_autosave'] : $_POST;

    	$post_type = get_post_type( $new_autosave['post_parent'] );

    	/*
    	 * Go through the revisioned meta keys and save them as part of the autosave,
    	 * if the meta key is part of the posted data, the meta value is not blank,
    	 * and the meta value has changes from the last autosaved value.
    	 */
    	foreach ( wp_post_revision_meta_keys( $post_type ) as $meta_key ) {

    		if ( isset( $posted_data[ $meta_key ] )
    			&& get_post_meta( $new_autosave['ID'], $meta_key, true ) !== wp_unslash( $posted_data[ $meta_key ] )
    		) {
    			/*
    			 * Use the underlying delete_metadata() and add_metadata() functions
    			 * vs delete_post_meta() and add_post_meta() to make sure we're working
    			 * with the actual revision meta.
    			 */
    			delete_metadata( 'post', $new_autosave['ID'], $meta_key );

    			// One last check to ensure meta value is not empty.
    			if ( ! empty( $posted_data[ $meta_key ] ) ) {
    				// Add the revisions meta data to the autosave.
    				add_metadata( 'post', $new_autosave['ID'], $meta_key, $posted_data[ $meta_key ] );
    			}
    		}
    	}
    }
    ```

[View all references](https://developer.wordpress.org/reference/files/wp-admin/includes/post.php/)
[View on Trac](https://core.trac.wordpress.org/browser/tags/6.9.4/src/wp-admin/includes/post.php#L2038)
[View on GitHub](https://github.com/WordPress/wordpress-develop/blob/6.9.4/src/wp-admin/includes/post.php#L2038-L2074)

## 󠀁[Related](https://developer.wordpress.org/reference/functions/wp_autosave_post_revisioned_meta_fields/?output_format=md#related)󠁿

| Uses | Description | 
| [wp_post_revision_meta_keys()](https://developer.wordpress.org/reference/functions/wp_post_revision_meta_keys/)`wp-includes/revision.php` |

Determine which post meta fields should be revisioned.

  | 
| [get_post_type()](https://developer.wordpress.org/reference/functions/get_post_type/)`wp-includes/post.php` |

Retrieves the post type of the current post or of a given post.

  | 
| [delete_metadata()](https://developer.wordpress.org/reference/functions/delete_metadata/)`wp-includes/meta.php` |

Deletes metadata for the specified object.

  | 
| [add_metadata()](https://developer.wordpress.org/reference/functions/add_metadata/)`wp-includes/meta.php` |

Adds metadata for the specified object.

  | 
| [wp_unslash()](https://developer.wordpress.org/reference/functions/wp_unslash/)`wp-includes/formatting.php` |

Removes slashes from a string or recursively removes slashes from strings within an array.

  | 
| [get_post_meta()](https://developer.wordpress.org/reference/functions/get_post_meta/)`wp-includes/post.php` |

Retrieves a post meta field for the given post ID.

  |

[Show 2 more](https://developer.wordpress.org/reference/functions/wp_autosave_post_revisioned_meta_fields/?output_format=md#)
[Show less](https://developer.wordpress.org/reference/functions/wp_autosave_post_revisioned_meta_fields/?output_format=md#)

## 󠀁[Changelog](https://developer.wordpress.org/reference/functions/wp_autosave_post_revisioned_meta_fields/?output_format=md#changelog)󠁿

| Version | Description | 
| [6.4.0](https://developer.wordpress.org/reference/since/6.4.0/) | Introduced. |

## User Contributed Notes

You must [log in](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Ffunctions%2Fwp_autosave_post_revisioned_meta_fields%2F)
before being able to contribute a note or feedback.