WP_Customize_Setting::_multidimensional_preview_filter( mixed $original ): mixed

Callback function to filter multidimensional theme mods and options.

Description

For all multidimensional settings of a given type, the preview filter for the first setting previewed will be used to apply the values for the others.

See also

  • WP_Customize_Setting::$aggregated_multidimensionals

Parameters

$originalmixedrequired
Original root value.

Return

mixed New or old value.

Source

final public function _multidimensional_preview_filter( $original ) {
	if ( ! $this->is_current_blog_previewed() ) {
		return $original;
	}

	$id_base = $this->id_data['base'];

	// If no settings have been previewed yet (which should not be the case, since $this is), just pass through the original value.
	if ( empty( self::$aggregated_multidimensionals[ $this->type ][ $id_base ]['previewed_instances'] ) ) {
		return $original;
	}

	foreach ( self::$aggregated_multidimensionals[ $this->type ][ $id_base ]['previewed_instances'] as $previewed_setting ) {
		// Skip applying previewed value for any settings that have already been applied.
		if ( ! empty( self::$aggregated_multidimensionals[ $this->type ][ $id_base ]['preview_applied_instances'][ $previewed_setting->id ] ) ) {
			continue;
		}

		// Do the replacements of the posted/default sub value into the root value.
		$value = $previewed_setting->post_value( $previewed_setting->default );
		$root  = self::$aggregated_multidimensionals[ $previewed_setting->type ][ $id_base ]['root_value'];
		$root  = $previewed_setting->multidimensional_replace( $root, $previewed_setting->id_data['keys'], $value );
		self::$aggregated_multidimensionals[ $previewed_setting->type ][ $id_base ]['root_value'] = $root;

		// Mark this setting having been applied so that it will be skipped when the filter is called again.
		self::$aggregated_multidimensionals[ $previewed_setting->type ][ $id_base ]['preview_applied_instances'][ $previewed_setting->id ] = true;
	}

	return self::$aggregated_multidimensionals[ $this->type ][ $id_base ]['root_value'];
}

Changelog

VersionDescription
4.4.0Introduced.

User Contributed Notes

You must log in before being able to contribute a note or feedback.