@@ -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 */
770771static 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 ) ) {
773773return '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