WP_Customize_Manager::unsanitized_post_values()
Gets dirty pre-sanitized setting values in the current customized state.
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.
Метод класса: WP_Customize_Manager{}
Хуков нет.
Возвращает
Массив
.
Использование
$WP_Customize_Manager = new WP_Customize_Manager(); $WP_Customize_Manager->unsanitized_post_values( $args );
- $args(массив)
Args.
По умолчанию: array()
-
exclude_changeset(true|false)
Whether the changeset values should also be excluded.
По умолчанию: false - exclude_post_data(true|false)
Whether the post input values should also be excluded.
По умолчанию: false when lacking the customize capability
-
Список изменений
С версии 4.1.1 | Введена. |
С версии 4.7.0 | Added $args parameter and merging with changeset values and stashed theme mods. |
Код WP_Customize_Manager::unsanitized_post_values() WP Customize Manager::unsanitized post values WP 6.6.1
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; }