From 06ee519376a6b7a6e230603e0291c82dd5327074 Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Sun, 4 Dec 2016 17:28:27 +0000 Subject: [PATCH] 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 --- src/wp-includes/theme.php | 7 ++++- .../tests/customize/custom-css-setting.php | 28 +++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/src/wp-includes/theme.php b/src/wp-includes/theme.php index cf1bb0fa33..8aac86c9f7 100644 --- a/src/wp-includes/theme.php +++ b/src/wp-includes/theme.php @@ -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 ); diff --git a/tests/phpunit/tests/customize/custom-css-setting.php b/tests/phpunit/tests/customize/custom-css-setting.php index e787094479..102d303a0c 100644 --- a/tests/phpunit/tests/customize/custom-css-setting.php +++ b/tests/phpunit/tests/customize/custom-css-setting.php @@ -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. *