WordPress.org

Make WordPress Core

Changeset 39318


Ignore:
Timestamp:
11/19/16 05:59:12 (8 months 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.