- /**
- * Filter the list of fields saved in post revisions.
- *
- * Included by default: 'post_title', 'post_content' and 'post_excerpt'.
- *
- * Disallowed fields: 'ID', 'post_name', 'post_parent', 'post_date',
- * 'post_date_gmt', 'post_status', 'post_type', 'comment_count',
- * and 'post_author'.
- *
- * @since 2.6.0
- *
- * @param array $fields List of fields to revision. Contains 'post_title',
- * 'post_content', and 'post_excerpt' by default.
- */
- $fields = apply_filters( '_wp_post_revision_fields', $fields );
+ /**
+ * Filters the list of fields saved in post revisions.
+ *
+ * Included by default: 'post_title', 'post_content' and 'post_excerpt'.
+ *
+ * Disallowed fields: 'ID', 'post_name', 'post_parent', 'post_date',
+ * 'post_date_gmt', 'post_status', 'post_type', 'comment_count',
+ * and 'post_author'.
+ *
+ * @since 2.6.0
+ * @since 4.5.0 The `$post` parameter was added.
+ *
+ * @param array $fields List of fields to revision. Contains 'post_title',
+ * 'post_content', and 'post_excerpt' by default.
+ * @param array $post A post array being processed for insertion as a post revision.
+ */
+ $fields = apply_filters( '_wp_post_revision_fields', $fields, $post );
+
+ // WP uses these internally either in versioning or elsewhere - they cannot be versioned
+ foreach ( array( 'ID', 'post_name', 'post_parent', 'post_date', 'post_date_gmt', 'post_status', 'post_type', 'comment_count', 'post_author' ) as $protect ) {
+ unset( $fields[ $protect ] );
+ }
+
+
+ return $fields;
+}