]> scripts.mit.edu Git - autoinstallsdev/wordpress.git/blobdiff - wp-includes/js/customize-preview-widgets.js
Wordpress 4.6
[autoinstallsdev/wordpress.git] / wp-includes / js / customize-preview-widgets.js
index b22087b64a2585fd6d2737fb092aa2a97858d9b5..47972784f9101769a42f91368ac83a13ad585453 100644 (file)
@@ -372,10 +372,15 @@ wp.customize.widgetsPreview = wp.customize.WidgetCustomizerPreview = (function(
                                }
 
                                widgetContainerElement = $(
-                                       sidebarPartial.params.sidebarArgs.before_widget.replace( '%1$s', widgetId ).replace( '%2$s', 'widget' ) +
+                                       sidebarPartial.params.sidebarArgs.before_widget.replace( /%1\$s/g, widgetId ).replace( /%2\$s/g, 'widget' ) +
                                        sidebarPartial.params.sidebarArgs.after_widget
                                );
 
+                               // Handle rare case where before_widget and after_widget are empty.
+                               if ( ! widgetContainerElement[0] ) {
+                                       return;
+                               }
+
                                widgetContainerElement.attr( 'data-customize-partial-id', widgetPartial.id );
                                widgetContainerElement.attr( 'data-customize-partial-type', 'widget' );
                                widgetContainerElement.attr( 'data-customize-widget-id', widgetId );
@@ -511,7 +516,7 @@ wp.customize.widgetsPreview = wp.customize.WidgetCustomizerPreview = (function(
 
                $.each( self.registeredSidebars, function( i, sidebar ) {
                        var widgetTpl = [
-                                       sidebar.before_widget.replace( '%1$s', '' ).replace( '%2$s', '' ),
+                                       sidebar.before_widget,
                                        sidebar.before_title,
                                        sidebar.after_title,
                                        sidebar.after_widget
@@ -521,19 +526,18 @@ wp.customize.widgetsPreview = wp.customize.WidgetCustomizerPreview = (function(
                                widgetClasses;
 
                        emptyWidget = $( widgetTpl );
-                       widgetSelector = emptyWidget.prop( 'tagName' );
-                       widgetClasses = emptyWidget.prop( 'className' );
+                       widgetSelector = emptyWidget.prop( 'tagName' ) || '';
+                       widgetClasses = emptyWidget.prop( 'className' ) || '';
 
                        // Prevent a rare case when before_widget, before_title, after_title and after_widget is empty.
                        if ( ! widgetClasses ) {
                                return;
                        }
 
+                       // Remove class names that incorporate the string formatting placeholders %1$s and %2$s.
+                       widgetClasses = widgetClasses.replace( /\S*%[12]\$s\S*/g, '' );
                        widgetClasses = widgetClasses.replace( /^\s+|\s+$/g, '' );
-
-                       if ( widgetClasses ) {
-                               widgetSelector += '.' + widgetClasses.split( /\s+/ ).join( '.' );
-                       }
+                       widgetSelector += '.' + widgetClasses.split( /\s+/ ).join( '.' );
                        self.widgetSelectors.push( widgetSelector );
                });
        };