Skip to content

Commit dca58fa

Browse files
committed
Export whether each widget is_live_previewable to client
1 parent b0d225e commit dca58fa

File tree

3 files changed

+21
-6
lines changed

3 files changed

+21
-6
lines changed

class-widget-form-wp-customize-control.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,11 @@ class Widget_Form_WP_Customize_Control extends WP_Customize_Control {
1212
public $width;
1313
public $height;
1414
public $is_wide = false;
15+
public $is_live_previewable = false;
1516

1617
public function to_json() {
1718
parent::to_json();
18-
$exported_properties = array( 'widget_id', 'widget_id_base', 'sidebar_id', 'width', 'height', 'is_wide' );
19+
$exported_properties = array( 'widget_id', 'widget_id_base', 'sidebar_id', 'width', 'height', 'is_wide', 'is_live_previewable' );
1920
foreach ( $exported_properties as $key ) {
2021
$this->json[$key] = $this->$key;
2122
}

widget-customizer.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -485,7 +485,8 @@ var WidgetCustomizer = (function ($) {
485485
is_new: ! is_existing_widget,
486486
width: widget.get( 'width' ),
487487
height: widget.get( 'height' ),
488-
is_wide: widget.get( 'is_wide' )
488+
is_wide: widget.get( 'is_wide' ),
489+
is_live_previewable: widget.get( 'is_live_previewable' )
489490
},
490491
previewer: control.setting.previewer
491492
} );
@@ -653,7 +654,7 @@ var WidgetCustomizer = (function ($) {
653654
} );
654655
e.preventDefault();
655656
}
656-
});
657+
} );
657658

658659
// Remove loading indicators when the setting is saved and the preview updates
659660
control.setting.previewer.channel.bind( 'synced', function () {

widget-customizer.php

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -486,6 +486,7 @@ static function customize_register( $wp_customize = null ) {
486486
'width' => $wp_registered_widget_controls[$widget_id]['width'],
487487
'height' => $wp_registered_widget_controls[$widget_id]['height'],
488488
'is_wide' => self::is_wide_widget( $widget_id ),
489+
'is_live_previewable' => self::is_widget_live_previewable( $id_base ),
489490
)
490491
);
491492
$wp_customize->add_control( $control );
@@ -768,10 +769,21 @@ static function temp_customize_sanitize_js( $value, $setting ) {
768769
* @return string {refresh|postMessage}
769770
*/
770771
static function get_widget_setting_transport( $id_base ) {
771-
global $wp_registered_widgets, $wp_registered_widget_controls;
772-
if ( ! current_theme_supports( 'widget-customizer' ) ) {
772+
if ( ! current_theme_supports( 'widget-customizer' ) || ! self::is_widget_live_previewable( $id_base ) ) {
773773
return 'refresh';
774+
} else {
775+
return 'postMessage';
774776
}
777+
}
778+
779+
/**
780+
* Return whether a widget supports being
781+
*
782+
* @param string $id_base
783+
* @return boolean
784+
*/
785+
static function is_widget_live_previewable( $id_base ) {
786+
global $wp_registered_widgets, $wp_registered_widget_controls;
775787
$live_previewable = false;
776788

777789
// Core widgets all have built-in support
@@ -791,7 +803,7 @@ static function get_widget_setting_transport( $id_base ) {
791803

792804
$live_previewable = apply_filters( 'customizer_widget_live_previewable', $live_previewable, $id_base );
793805
$live_previewable = apply_filters( "customizer_widget_live_previewable_{$id_base}", $live_previewable );
794-
return $live_previewable ? 'postMessage' : 'refresh';
806+
return $live_previewable;
795807
}
796808

797809
/**
@@ -886,6 +898,7 @@ static function get_available_widgets() {
886898
'width' => $wp_registered_widget_controls[$widget['id']]['width'],
887899
'height' => $wp_registered_widget_controls[$widget['id']]['height'],
888900
'is_wide' => self::is_wide_widget( $widget['id'] ),
901+
'is_live_previewable' => self::is_widget_live_previewable( $id_base ),
889902
)
890903
);
891904

0 commit comments

Comments
 (0)