diff --git src/wp-includes/class-wp-customize-nav-menus.php src/wp-includes/class-wp-customize-nav-menus.php
index 3d9e60f..40a7f6b 100644
|
|
|
final class WP_Customize_Nav_Menus { |
| 795 | 795 | */ |
| 796 | 796 | public function filter_wp_nav_menu( $nav_menu_content, $args ) { |
| 797 | 797 | if ( ! empty( $args->can_partial_refresh ) && ! empty( $args->instance_number ) ) { |
| 798 | | $nav_menu_content = sprintf( |
| 799 | | '<div id="partial-refresh-menu-container-%1$d" class="partial-refresh-menu-container" data-instance-number="%1$d">%2$s</div>', |
| 800 | | $args->instance_number, |
| 801 | | $nav_menu_content |
| | 798 | $nav_menu_content = preg_replace( |
| | 799 | '/(?<=class=")/', |
| | 800 | sprintf( 'partial-refreshable-nav-menu partial-refreshable-nav-menu-%1$d ', $args->instance_number ), |
| | 801 | $nav_menu_content, |
| | 802 | 1 // Only update the class on the first element found, the menu container. |
| 802 | 803 | ); |
| 803 | 804 | } |
| 804 | 805 | return $nav_menu_content; |
diff --git src/wp-includes/js/customize-preview-nav-menus.js src/wp-includes/js/customize-preview-nav-menus.js
index 2b6c994..4b9ac08 100644
|
|
|
wp.customize.menusPreview = ( function( $, api ) { |
| 163 | 163 | * @param {int} instanceNumber |
| 164 | 164 | */ |
| 165 | 165 | self.refreshMenuInstance = function( instanceNumber ) { |
| 166 | | var self = this, data, customized, container, request, wpNavArgs, instance; |
| | 166 | var self = this, data, customized, container, request, wpNavArgs, instance, containerInstanceClassName; |
| 167 | 167 | |
| 168 | 168 | if ( ! self.navMenuInstanceArgs[ instanceNumber ] ) { |
| 169 | 169 | throw new Error( 'unknown_instance_number' ); |
| 170 | 170 | } |
| 171 | 171 | instance = self.navMenuInstanceArgs[ instanceNumber ]; |
| 172 | 172 | |
| 173 | | container = $( '#partial-refresh-menu-container-' + String( instanceNumber ) ); |
| | 173 | containerInstanceClassName = 'partial-refreshable-nav-menu-' + String( instanceNumber ); |
| | 174 | container = $( '.' + containerInstanceClassName ); |
| 174 | 175 | |
| 175 | 176 | if ( ! instance.can_partial_refresh || 0 === container.length ) { |
| 176 | 177 | api.preview.send( 'refresh' ); |
| … |
… |
wp.customize.menusPreview = ( function( $, api ) { |
| 207 | 208 | url: self.requestUri |
| 208 | 209 | } ); |
| 209 | 210 | request.done( function( data ) { |
| 210 | | var eventParam; |
| 211 | | container.empty().append( $( data ) ); |
| | 211 | // If the menu is now not visible, refresh since the page layout may have changed. |
| | 212 | if ( false === data ) { |
| | 213 | api.preview.send( 'refresh' ); |
| | 214 | return; |
| | 215 | } |
| | 216 | |
| | 217 | var eventParam, previousContainer = container; |
| | 218 | container = $( data ); |
| | 219 | container.addClass( containerInstanceClassName ); |
| | 220 | container.addClass( 'partial-refreshable-nav-menu customize-partial-refreshing' ); |
| | 221 | previousContainer.replaceWith( container ); |
| 212 | 222 | eventParam = { |
| 213 | 223 | instanceNumber: instanceNumber, |
| 214 | 224 | wpNavArgs: wpNavArgs |
| 215 | 225 | }; |
| 216 | | $( document ).trigger( 'customize-preview-menu-refreshed', [ eventParam ] ); |
| 217 | | } ); |
| 218 | | request.fail( function() { |
| 219 | | // @todo provide some indication for why |
| 220 | | } ); |
| 221 | | request.always( function() { |
| 222 | 226 | container.removeClass( 'customize-partial-refreshing' ); |
| | 227 | $( document ).trigger( 'customize-preview-menu-refreshed', [ eventParam ] ); |
| 223 | 228 | } ); |
| 224 | 229 | }; |
| 225 | 230 | |