Make WordPress Core


Ignore:
Timestamp:
11/21/2015 02:51:57 AM (9 years ago)
Author:
westonruter
Message:

Customize: Ensure that a setting (especially a multidimensional one) can still be previewed when the post value to preview is set after preview() is invoked.

  • Introduce customize_post_value_set_{$setting_id} and customize_post_value_set actions which are done when WP_Customize_Manager::set_post_value() is called.
  • Clear the preview_applied flag for aggregated multidimensional settings when a post value is set. This ensures the new value is used instead of a previously-cached previewed value.
  • Move $is_preview property from subclasses to WP_Customize_Setting parent class.
  • Deferred preview: Ensure that when preview() short-circuits due to not being applicable that it will be called again later when the post value is set.
  • Populate post value for updated-widget with the (unsanitized) JS-value in WP_Customize_Widgets::call_widget_update() so that value will be properly sanitized when accessed in WP_Customize_Manager::post_value().

Includes unit tests with assertions to check the reported issues and validate the fixes.

Fixes defect introduced in [35007].
See #32103.
Fixes #34738.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/class-wp-customize-widgets.php

    r35381 r35724  
    13811381         * instead of the default widget instance value (an empty array).
    13821382         */
    1383         $this->manager->set_post_value( $setting_id, $instance );
     1383        $this->manager->set_post_value( $setting_id, $this->sanitize_widget_js_instance( $instance ) );
    13841384
    13851385        // Obtain the widget control with the updated instance in place.
Note: See TracChangeset for help on using the changeset viewer.