Customize: Ensure that WP_Customize_Setting::value()
can return a previewed value for aggregated multidimensionals.
Fixes #37294. git-svn-id: https://develop.svn.wordpress.org/trunk@37982 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
bddb06dd13
commit
ad52e49e4f
@ -711,6 +711,11 @@ class WP_Customize_Setting {
|
|||||||
} elseif ( $this->is_multidimensional_aggregated ) {
|
} elseif ( $this->is_multidimensional_aggregated ) {
|
||||||
$root_value = self::$aggregated_multidimensionals[ $this->type ][ $id_base ]['root_value'];
|
$root_value = self::$aggregated_multidimensionals[ $this->type ][ $id_base ]['root_value'];
|
||||||
$value = $this->multidimensional_get( $root_value, $this->id_data['keys'], $this->default );
|
$value = $this->multidimensional_get( $root_value, $this->id_data['keys'], $this->default );
|
||||||
|
|
||||||
|
// Ensure that the post value is used if the setting is previewed, since preview filters aren't applying on cached $root_value.
|
||||||
|
if ( $this->is_previewed ) {
|
||||||
|
$value = $this->post_value( $value );
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
$value = $this->get_root_value( $this->default );
|
$value = $this->get_root_value( $this->default );
|
||||||
}
|
}
|
||||||
|
@ -640,5 +640,29 @@ class Tests_WP_Customize_Setting extends WP_UnitTestCase {
|
|||||||
}
|
}
|
||||||
return $validity;
|
return $validity;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ensure that WP_Customize_Setting::value() can return a previewed value for aggregated multidimensionals.
|
||||||
|
*
|
||||||
|
* @ticket 37294
|
||||||
|
*/
|
||||||
|
public function test_multidimensional_value_when_previewed() {
|
||||||
|
WP_Customize_Setting::reset_aggregated_multidimensionals();
|
||||||
|
|
||||||
|
$initial_value = 456;
|
||||||
|
set_theme_mod( 'nav_menu_locations', array(
|
||||||
|
'primary' => $initial_value,
|
||||||
|
) );
|
||||||
|
$setting_id = 'nav_menu_locations[primary]';
|
||||||
|
|
||||||
|
$setting = new WP_Customize_Setting( $this->manager, $setting_id );
|
||||||
|
$this->assertEquals( $initial_value, $setting->value() );
|
||||||
|
|
||||||
|
$override_value = -123456;
|
||||||
|
$this->manager->set_post_value( $setting_id, $override_value );
|
||||||
|
$setting->preview();
|
||||||
|
|
||||||
|
$this->assertEquals( $override_value, $setting->value() );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user