WP_Customize_Manager::unsanitized_post_values( array $args = array() )
Get dirty pre-sanitized setting values in the current customized state.
Description
The returned array consists of a merge of three sources:
- If the theme is not currently active, then the base array is any stashed theme mods that were modified previously but never published.
- The values from the current changeset, if it exists.
- If the user can customize, the values parsed from the incoming $_POST['customized']JSON data.
- Any programmatically-set post values via WP_Customize_Manager::set_post_value().
The name "unsanitized_post_values" is a carry-over from when the customized state was exclusively sourced from $_POST['customized']. Nevertheless, the value returned will come from the current changeset post and from the incoming post data.
Parameters
- $args
-  (array) (Optional) Args. - 
'exclude_changeset'
 (bool) Whether the changeset values should also be excluded. Defaults to false.
- 
'exclude_post_data'
 (bool) Whether the post input values should also be excluded. Defaults to false when lacking the customize capability.
 Default value: array() 
- 
'exclude_changeset'
Return
(array)
Source
File: wp-includes/class-wp-customize-manager.php
public function unsanitized_post_values( $args = array() ) {
		$args = array_merge(
			array(
				'exclude_changeset' => false,
				'exclude_post_data' => ! current_user_can( 'customize' ),
			),
			$args
		);
		$values = array();
		// Let default values be from the stashed theme mods if doing a theme switch and if no changeset is present.
		if ( ! $this->is_theme_active() ) {
			$stashed_theme_mods = get_option( 'customize_stashed_theme_mods' );
			$stylesheet         = $this->get_stylesheet();
			if ( isset( $stashed_theme_mods[ $stylesheet ] ) ) {
				$values = array_merge( $values, wp_list_pluck( $stashed_theme_mods[ $stylesheet ], 'value' ) );
			}
		}
		if ( ! $args['exclude_changeset'] ) {
			foreach ( $this->changeset_data() as $setting_id => $setting_params ) {
				if ( ! array_key_exists( 'value', $setting_params ) ) {
					continue;
				}
				if ( isset( $setting_params['type'] ) && 'theme_mod' === $setting_params['type'] ) {
					// Ensure that theme mods values are only used if they were saved under the current theme.
					$namespace_pattern = '/^(?P<stylesheet>.+?)::(?P<setting_id>.+)$/';
					if ( preg_match( $namespace_pattern, $setting_id, $matches ) && $this->get_stylesheet() === $matches['stylesheet'] ) {
						$values[ $matches['setting_id'] ] = $setting_params['value'];
					}
				} else {
					$values[ $setting_id ] = $setting_params['value'];
				}
			}
		}
		if ( ! $args['exclude_post_data'] ) {
			if ( ! isset( $this->_post_values ) ) {
				if ( isset( $_POST['customized'] ) ) {
					$post_values = json_decode( wp_unslash( $_POST['customized'] ), true );
				} else {
					$post_values = array();
				}
				if ( is_array( $post_values ) ) {
					$this->_post_values = $post_values;
				} else {
					$this->_post_values = array();
				}
			}
			$values = array_merge( $values, $this->_post_values );
		}
		return $values;
	}  Changelog
| Version | Description | 
|---|---|
| 4.7.0 | Added $argsparameter and merging with changeset values and stashed theme mods. | 
| 4.1.1 | Introduced. | 
    © 2003–2021 WordPress Foundation
Licensed under the GNU GPLv2+ License.
    https://developer.wordpress.org/reference/classes/wp_customize_manager/unsanitized_post_values