WP_Customize_Manager::unsanitized_post_values() WordPress Method

The unsanitized_post_values() method is used to retrieve values from the $_POST superglobal that have not been filtered by the wp_unslash() function. This is useful when accessing raw data from the $_POST superglobal, such as when using the jQuery serializeArray() method.

WP_Customize_Manager::unsanitized_post_values( array $args = array() ) #

Gets dirty pre-sanitized setting values in the current customized state.


Description

The returned array consists of a merge of three sources:

  1. If the theme is not currently active, then the base array is any stashed theme mods that were modified previously but never published.
  2. The values from the current changeset, if it exists.
  3. If the user can customize, the values parsed from the incoming $_POST['customized'] JSON data.
  4. 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.


Top ↑

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()


Top ↑

Return

(array)


Top ↑

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 active 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;
	}


Top ↑

Changelog

Changelog
VersionDescription
4.7.0Added $args parameter and merging with changeset values and stashed theme mods.
4.1.1Introduced.

The content displayed on this page has been created in part by processing WordPress source code files which are made available under the GPLv2 (or a later version) license by theĀ Free Software Foundation. In addition to this, the content includes user-written examples and information. All material is subject to review and curation by the WPPaste.com community.