mirror of
git://develop.git.wordpress.org/
synced 2025-02-26 17:42:26 +01:00
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. Amends [35007]. See #32103. Fixes #36952. git-svn-id: https://develop.svn.wordpress.org/trunk@40036 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
43aed27058
commit
7d8b03458c
@ -587,7 +587,7 @@ class WP_Customize_Setting {
|
||||
$id_base = $this->id_data['base'];
|
||||
if ( 'option' === $this->type ) {
|
||||
return get_option( $id_base, $default );
|
||||
} else if ( 'theme_mod' ) {
|
||||
} elseif ( 'theme_mod' === $this->type ) {
|
||||
return get_theme_mod( $id_base, $default );
|
||||
} else {
|
||||
/*
|
||||
@ -616,7 +616,7 @@ class WP_Customize_Setting {
|
||||
$autoload = self::$aggregated_multidimensionals[ $this->type ][ $this->id_data['base'] ]['autoload'];
|
||||
}
|
||||
return update_option( $id_base, $value, $autoload );
|
||||
} else if ( 'theme_mod' ) {
|
||||
} elseif ( 'theme_mod' === $this->type ) {
|
||||
set_theme_mod( $id_base, $value );
|
||||
return true;
|
||||
} else {
|
||||
|
@ -402,12 +402,21 @@ class Tests_WP_Customize_Setting extends WP_UnitTestCase {
|
||||
'default' => 123,
|
||||
'sanitize_callback' => array( $this->manager->nav_menus, 'intval_base10' ),
|
||||
) );
|
||||
|
||||
/*
|
||||
* In #36952 the conditions were such that get_theme_mod() be erroneously used
|
||||
* to source the root value for a custom multidimensional type.
|
||||
* Add a theme mod with the same name as the custom setting to test fix.
|
||||
*/
|
||||
set_theme_mod( $setting_id, 999 );
|
||||
$this->assertSame( 123, $setting->value() );
|
||||
|
||||
$this->manager->set_post_value( $setting_id, '456' );
|
||||
$setting->preview();
|
||||
$this->assertSame( 456, $setting->value() );
|
||||
|
||||
unset( $this->custom_type_data_previewed, $this->custom_type_data_saved );
|
||||
remove_theme_mod( $setting_id );
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user