diff --git src/wp-includes/theme.php src/wp-includes/theme.php
index da1cb12ce9..08045cb11a 100644
|
|
|
function wp_get_custom_css_post( $stylesheet = '' ) {
|
| 1652 | 1652 | |
| 1653 | 1653 | if ( $post_id > 0 && get_post( $post_id ) ) { |
| 1654 | 1654 | $post = get_post( $post_id ); |
| 1655 | | } else { |
| | 1655 | } |
| | 1656 | |
| | 1657 | // `-1` indicates no post exists; no query necessary. |
| | 1658 | if ( ! $post && -1 !== $post_id ) { |
| 1656 | 1659 | $query = new WP_Query( $custom_css_query_vars ); |
| 1657 | 1660 | $post = $query->post; |
| 1658 | 1661 | /* |
| 1659 | | * Cache the lookup. See WP_Customize_Custom_CSS_Setting::update(). |
| | 1662 | * Cache the lookup. See wp_update_custom_css_post(). |
| 1660 | 1663 | * @todo This should get cleared if a custom_css post is added/removed. |
| 1661 | 1664 | */ |
| 1662 | | if ( $post ) { |
| 1663 | | set_theme_mod( 'custom_css_post_id', $post->ID ); |
| 1664 | | } elseif ( -1 !== $post_id ) { |
| 1665 | | set_theme_mod( 'custom_css_post_id', -1 ); |
| 1666 | | } |
| | 1665 | set_theme_mod( 'custom_css_post_id', $post ? $post->ID : -1 ); |
| 1667 | 1666 | } |
| 1668 | 1667 | } else { |
| 1669 | 1668 | $query = new WP_Query( $custom_css_query_vars ); |
| … |
… |
function wp_update_custom_css_post( $css, $args = array() ) {
|
| 1787 | 1786 | } else { |
| 1788 | 1787 | $r = wp_insert_post( wp_slash( $post_data ), true ); |
| 1789 | 1788 | |
| 1790 | | // Trigger creation of a revision. This should be removed once #30854 is resolved. |
| 1791 | | if ( ! is_wp_error( $r ) && 0 === count( wp_get_post_revisions( $r ) ) ) { |
| 1792 | | wp_save_post_revision( $r ); |
| | 1789 | if ( ! is_wp_error( $r ) ) { |
| | 1790 | if ( get_stylesheet() === $args['stylesheet'] ) { |
| | 1791 | set_theme_mod( 'custom_css_post_id', $r ); |
| | 1792 | } |
| | 1793 | |
| | 1794 | // Trigger creation of a revision. This should be removed once #30854 is resolved. |
| | 1795 | if ( 0 === count( wp_get_post_revisions( $r ) ) ) { |
| | 1796 | wp_save_post_revision( $r ); |
| | 1797 | } |
| 1793 | 1798 | } |
| 1794 | 1799 | } |
| 1795 | 1800 | |
diff --git tests/phpunit/tests/customize/custom-css-setting.php tests/phpunit/tests/customize/custom-css-setting.php
index 7aff1b43b5..7178625230 100644
|
|
|
class Test_WP_Customize_Custom_CSS_Setting extends WP_UnitTestCase {
|
| 135 | 135 | ) ); |
| 136 | 136 | $twentyten_setting = new WP_Customize_Custom_CSS_Setting( $this->wp_customize, 'custom_css[twentyten]' ); |
| 137 | 137 | |
| | 138 | remove_theme_mod( 'custom_css_post_id' ); |
| | 139 | |
| 138 | 140 | $this->assertEquals( $post_id, wp_get_custom_css_post()->ID ); |
| 139 | 141 | $this->assertEquals( $post_id, wp_get_custom_css_post( $this->setting->stylesheet )->ID ); |
| 140 | 142 | $this->assertEquals( $twentyten_post_id, wp_get_custom_css_post( 'twentyten' )->ID ); |
| … |
… |
class Test_WP_Customize_Custom_CSS_Setting extends WP_UnitTestCase {
|
| 221 | 223 | } |
| 222 | 224 | |
| 223 | 225 | /** |
| | 226 | * Test that wp_get_custom_css_post() doesn't query for a post after caching a failed lookup. |
| | 227 | * |
| | 228 | * @ticket 39259 |
| | 229 | */ |
| | 230 | function test_get_custom_css_post_queries_after_failed_lookup() { |
| | 231 | set_theme_mod( 'custom_css_post_id', -1 ); |
| | 232 | $queries_before = get_num_queries(); |
| | 233 | wp_get_custom_css_post(); |
| | 234 | $this->assertSame( get_num_queries(), $queries_before ); |
| | 235 | } |
| | 236 | |
| | 237 | /** |
| | 238 | * Test that wp_update_custom_css_post() updates the 'custom_css_post_id' theme mod. |
| | 239 | * |
| | 240 | * @ticket 39259 |
| | 241 | */ |
| | 242 | function test_update_custom_css_updates_theme_mod() { |
| | 243 | set_theme_mod( 'custom_css_post_id', -1 ); |
| | 244 | $post = wp_update_custom_css_post( 'body { background: blue; }' ); |
| | 245 | $this->assertSame( $post->ID, get_theme_mod( 'custom_css_post_id' ) ); |
| | 246 | } |
| | 247 | |
| | 248 | /** |
| 224 | 249 | * Test crud methods on WP_Customize_Custom_CSS_Setting. |
| 225 | 250 | * |
| 226 | 251 | * @covers WP_Customize_Custom_CSS_Setting::value() |
| … |
… |
class Test_WP_Customize_Custom_CSS_Setting extends WP_UnitTestCase {
|
| 237 | 262 | 'post_status' => 'publish', |
| 238 | 263 | 'post_type' => 'custom_css', |
| 239 | 264 | ) ); |
| | 265 | remove_theme_mod( 'custom_css_post_id' ); |
| 240 | 266 | $this->assertEquals( '/*custom*//*filtered*/', $this->setting->value() ); |
| 241 | 267 | |
| 242 | 268 | $this->wp_customize->set_post_value( $this->setting->id, '/*overridden*/' ); |