WordPress.org

Make WordPress Core

Changeset 40088


Ignore:
Timestamp:
02/20/17 06:49:11 (8 months ago)
Author:
dd32
Message:

Customize: Ensure root values are accessible in multidimensional custom setting types.

Fixes bad conditions in WP_Customize_Setting::get_root_value() and WP_Customize_Setting::set_root_value().

Props dlh, westonruter.
Amends [35007].
Merges [40036] to the 4.7 branch.
See #32103.
Fixes #36952.

Location:
branches/4.7
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/4.7

  • branches/4.7/src/wp-includes/class-wp-customize-setting.php

    r39318 r40088  
    586586        if ( 'option' === $this->type ) { 
    587587            return get_option( $id_base, $default ); 
    588         } else if ( 'theme_mod' ) { 
     588        } elseif ( 'theme_mod' === $this->type ) { 
    589589            return get_theme_mod( $id_base, $default ); 
    590590        } else { 
     
    615615            } 
    616616            return update_option( $id_base, $value, $autoload ); 
    617         } else if ( 'theme_mod' ) { 
     617        } elseif ( 'theme_mod' === $this->type ) { 
    618618            set_theme_mod( $id_base, $value ); 
    619619            return true; 
  • branches/4.7/tests/phpunit/tests/customize/setting.php

    r39318 r40088  
    403403            'sanitize_callback' => array( $this->manager->nav_menus, 'intval_base10' ), 
    404404        ) ); 
     405 
     406        /* 
     407         * In #36952 the conditions were such that get_theme_mod() be erroneously used 
     408         * to source the root value for a custom multidimensional type. 
     409         * Add a theme mod with the same name as the custom setting to test fix. 
     410         */ 
     411        set_theme_mod( $setting_id, 999 ); 
    405412        $this->assertSame( 123, $setting->value() ); 
     413 
    406414        $this->manager->set_post_value( $setting_id, '456' ); 
    407415        $setting->preview(); 
     
    409417 
    410418        unset( $this->custom_type_data_previewed, $this->custom_type_data_saved ); 
     419        remove_theme_mod( $setting_id ); 
    411420    } 
    412421 
Note: See TracChangeset for help on using the changeset viewer.