Make WordPress Core

Ticket #38864: 38864.1.diff

File 38864.1.diff, 2.7 KB (added by westonruter, 8 years ago)
  • src/wp-includes/class-wp-customize-setting.php

    diff --git src/wp-includes/class-wp-customize-setting.php src/wp-includes/class-wp-customize-setting.php
    index a16b100..7f1f98a 100644
    class WP_Customize_Setting { 
    696696                $is_core_type = ( 'option' === $this->type || 'theme_mod' === $this->type );
    697697
    698698                if ( ! $is_core_type && ! $this->is_multidimensional_aggregated ) {
     699
     700                        // Use post value if previewed and a post value is present.
     701                        if ( $this->is_previewed ) {
     702                                $value = $this->post_value( null );
     703                                if ( null !== $value ) {
     704                                        return $value;
     705                                }
     706                        }
     707
    699708                        $value = $this->get_root_value( $this->default );
    700709
    701710                        /**
  • src/wp-includes/customize/class-wp-customize-custom-css-setting.php

    diff --git src/wp-includes/customize/class-wp-customize-custom-css-setting.php src/wp-includes/customize/class-wp-customize-custom-css-setting.php
    index eb9379e..eadd47c 100644
    final class WP_Customize_Custom_CSS_Setting extends WP_Customize_Setting { 
    132132         * @return string
    133133         */
    134134        public function value() {
    135                 $id_base = $this->id_data['base'];
    136                 if ( $this->is_previewed && null !== $this->post_value( null ) ) {
    137                         return $this->post_value();
     135                if ( $this->is_previewed ) {
     136                        $post_value = $this->post_value( null );
     137                        if ( null !== $post_value ) {
     138                                return $post_value;
     139                        }
    138140                }
     141                $id_base = $this->id_data['base'];
    139142                $value = '';
    140143                $post = wp_get_custom_css_post( $this->stylesheet );
    141144                if ( $post ) {
  • tests/phpunit/tests/customize/setting.php

    diff --git tests/phpunit/tests/customize/setting.php tests/phpunit/tests/customize/setting.php
    index 89b0720..03fd0c2 100644
    class Tests_WP_Customize_Setting extends WP_UnitTestCase { 
    395395                $this->assertEquals( $post_data_overrides[ $name ], $this->custom_type_getter( $name, $this->undefined ) );
    396396                $this->assertEquals( $post_data_overrides[ $name ], $setting->value() );
    397397
     398                // Custom type that does not handle supplying the post value from the customize_value_{$id_base} filter.
     399                $setting_id = 'custom_without_previewing_value_filter';
     400                $setting = $this->manager->add_setting( $setting_id, array(
     401                        'type' => 'custom_preview_test',
     402                        'default' => 123,
     403                        'sanitize_callback' => array( $this->manager->nav_menus, 'intval_base10' ),
     404                ) );
     405                $this->assertSame( 123, $setting->value() );
     406                $this->manager->set_post_value( $setting_id, '456' );
     407                $setting->preview();
     408                $this->assertSame( 456, $setting->value() );
     409
    398410                unset( $this->custom_type_data_previewed, $this->custom_type_data_saved );
    399411        }
    400412