Make WordPress Core

Changeset 39318


Ignore:
Timestamp:
11/19/2016 05:59:12 AM (10 years ago)
Author:
westonruter
Message:

Customize: Ensure WP_Customize_Setting::value() returns previewed value for custom types utilizing the customize_value_{$id_base} filter.

Fixes #38864.

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/class-wp-customize-setting.php

    r38470 r39318  
    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
  • trunk/src/wp-includes/customize/class-wp-customize-custom-css-setting.php

    r39209 r39318  
    133133         */
    134134        public function value() {
     135                if ( $this->is_previewed ) {
     136                        $post_value = $this->post_value( null );
     137                        if ( null !== $post_value ) {
     138                                return $post_value;
     139                        }
     140                }
    135141                $id_base = $this->id_data['base'];
    136                 if ( $this->is_previewed && null !== $this->post_value( null ) ) {
    137                         return $this->post_value();
    138                 }
    139142                $value = '';
    140143                $post = wp_get_custom_css_post( $this->stylesheet );
  • trunk/tests/phpunit/tests/customize/setting.php

    r38810 r39318  
    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        }
Note: See TracChangeset for help on using the changeset viewer.