Introduce some actions and filters which aid plugins in revisioning post meta.

* `wp_save_post_revision_post_has_changed` filter which can be used to determine if a post has been changed, and therefore if a revision should be created for a post.
 * `wp_get_revision_ui_diff` filter which can be used to filter the fields displayed in the post revision diff UI.
 * `wp_creating_autosave` action which is fired just before an autosave is created.

See #20564.
Props mattheu, adamsilverstein.

Built from https://develop.svn.wordpress.org/trunk@30091


git-svn-id: http://core.svn.wordpress.org/trunk@30091 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
John Blackbourn 2014-10-29 19:02:21 +00:00
parent 9a16b52018
commit a866a7192f
4 changed files with 40 additions and 3 deletions

View File

@ -1541,6 +1541,15 @@ function wp_create_post_autosave( $post_data ) {
return 0;
}
/**
* Fires before an autosave is stored.
*
* @since 4.1.0
*
* @param array $new_autosave Post array - the autosave that is about to be saved.
*/
do_action( 'wp_creating_autosave', $new_autosave );
return wp_update_post( $new_autosave );
}

View File

@ -92,7 +92,18 @@ function wp_get_revision_ui_diff( $post, $compare_from, $compare_to ) {
);
}
}
return $return;
/**
* Filter the fields displayed in the post revision diff UI.
*
* @since 4.1.0
*
* @param array $return Revision UI fields. Each item is an array of id, name and diff.
* @param WP_Post $compare_from The revision post to compare from.
* @param WP_Post $compare_to The revision post to compare to.
*/
return apply_filters( 'wp_get_revision_ui_diff', $return, $compare_from, $compare_to );
}
/**

View File

@ -133,9 +133,26 @@ function wp_save_post_revision( $post_id ) {
break;
}
}
/**
* Filter whether a post has changed.
*
* By default a revision is saved only if one of the revisioned fields has changed.
* This filter allows for additional checks to determine if there were changes.
*
* @since 4.1.0
*
* @param bool $post_has_changed Whether the post has changed.
* @param WP_Post $last_revision The the last revision post object.
* @param WP_Post $post The post object.
*
*/
$post_has_changed = (bool) apply_filters( 'wp_save_post_revision_post_has_changed', $post_has_changed, $last_revision, $post );
//don't save revision if post unchanged
if( ! $post_has_changed )
if( ! $post_has_changed ) {
return;
}
}
}

View File

@ -4,7 +4,7 @@
*
* @global string $wp_version
*/
$wp_version = '4.1-alpha-30090';
$wp_version = '4.1-alpha-30091';
/**
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.