public function value()
{
$id_base = $this->id_data['base'];
$is_core_type = 'option' === $this->type || 'theme_mod' === $this->type;
if (!$is_core_type && !$this->is_multidimensional_aggregated) {
// Use post value if previewed and a post value is present.
if ($this->is_previewed) {
$value = $this->post_value(null);
if (null !== $value) {
return $value;
}
}
$value = $this->get_root_value($this->default);
/**
* Filters a Customize setting value not handled as a theme_mod or option.
*
* The dynamic portion of the hook name, `$id_base`, refers to
* the base slug of the setting name, initialized from `$this->id_data['base']`.
*
* For settings handled as theme_mods or options, see those corresponding
* functions for available hooks.
*
* @since 3.4.0
* @since 4.6.0 Added the `$this` setting instance as the second parameter.
*
* @param mixed $default The setting default value. Default empty.
* @param WP_Customize_Setting $this The setting instance.
*/
$value = apply_filters("customize_value_{$id_base}", $value, $this);
} elseif ($this->is_multidimensional_aggregated) {
$root_value = self::$aggregated_multidimensionals[$this->type][$id_base]['root_value'];
$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 {
$value = $this->get_root_value($this->default);
}
return $value;
}