Customize: Ensure a `custom_css` post insertion gets an initial post revision.

Props georgestephanis, westonruter.
See #30854, #38672, #35395.
Fixes #39032.


git-svn-id: https://develop.svn.wordpress.org/trunk@39477 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Weston Ruter 2016-12-04 17:28:27 +00:00
parent 980459a68b
commit 06ee519376
2 changed files with 34 additions and 1 deletions

View File

@ -1786,9 +1786,14 @@ function wp_update_custom_css_post( $css, $args = array() ) {
$r = wp_update_post( wp_slash( $post_data ), true );
} else {
$r = wp_insert_post( wp_slash( $post_data ), true );
// Trigger creation of a revision. This should be removed once #30854 is resolved.
if ( ! is_wp_error( $r ) && 0 === count( wp_get_post_revisions( $r ) ) ) {
wp_save_post_revision( $r );
}
}
if ( $r instanceof WP_Error ) {
if ( is_wp_error( $r ) ) {
return $r;
}
return get_post( $r );

View File

@ -192,6 +192,34 @@ class Test_WP_Customize_Custom_CSS_Setting extends WP_UnitTestCase {
$this->assertEquals( '', wp_get_custom_css( 'twentyten' ) );
}
/**
* Test revision saving on initial save of Custom CSS.
*
* @ticket 39032
*/
function test_custom_css_revision_saved() {
$inserted_css = 'body { background: black; }';
$updated_css = 'body { background: red; }';
$post = wp_update_custom_css_post( $inserted_css, array(
'stylesheet' => 'testtheme',
) );
$this->assertSame( $inserted_css, $post->post_content );
$revisions = array_values( wp_get_post_revisions( $post ) );
$this->assertCount( 1, $revisions );
$this->assertSame( $inserted_css, $revisions[0]->post_content );
wp_update_custom_css_post( $updated_css, array(
'stylesheet' => 'testtheme',
) );
$revisions = array_values( wp_get_post_revisions( $post ) );
$this->assertCount( 2, $revisions );
$this->assertSame( $updated_css, $revisions[0]->post_content );
$this->assertSame( $inserted_css, $revisions[1]->post_content );
}
/**
* Test crud methods on WP_Customize_Custom_CSS_Setting.
*