diff --git src/wp-includes/class-wp-customize-nav-menus.php src/wp-includes/class-wp-customize-nav-menus.php
index e7b7e0f..c13ed93 100644
|
|
final class WP_Customize_Nav_Menus { |
771 | 771 | ); |
772 | 772 | $args['can_partial_refresh'] = $can_partial_refresh; |
773 | 773 | |
| 774 | $hashed_args = $args; |
| 775 | |
774 | 776 | if ( ! $can_partial_refresh ) { |
775 | | $args['fallback_cb'] = ''; |
776 | | $args['walker'] = ''; |
| 777 | $hashed_args['fallback_cb'] = ''; |
| 778 | $hashed_args['walker'] = ''; |
777 | 779 | } |
778 | 780 | |
779 | | ksort( $args ); |
780 | | $args['args_hash'] = $this->hash_nav_menu_args( $args ); |
| 781 | ksort( $hashed_args ); |
| 782 | $hashed_args['args_hash'] = $this->hash_nav_menu_args( $hashed_args ); |
781 | 783 | |
782 | | $this->preview_nav_menu_instance_args[ $this->preview_nav_menu_instance_number ] = $args; |
| 784 | $this->preview_nav_menu_instance_args[ $this->preview_nav_menu_instance_number ] = $hashed_args; |
783 | 785 | return $args; |
784 | 786 | } |
785 | 787 | |
diff --git src/wp-includes/js/customize-preview-nav-menus.js src/wp-includes/js/customize-preview-nav-menus.js
index 2b6c994..ce962d6 100644
|
|
wp.customize.menusPreview = ( function( $, api ) { |
9 | 9 | renderNonceValue: null, |
10 | 10 | renderNoncePostKey: null, |
11 | 11 | previewCustomizeNonce: null, |
12 | | previewReady: $.Deferred(), |
13 | 12 | requestUri: '/', |
14 | 13 | theme: { |
15 | 14 | active: false, |
… |
… |
wp.customize.menusPreview = ( function( $, api ) { |
20 | 19 | }; |
21 | 20 | |
22 | 21 | api.bind( 'preview-ready', function() { |
23 | | self.previewReady.resolve(); |
24 | | } ); |
25 | | self.previewReady.done( function() { |
26 | | self.init(); |
| 22 | api.preview.bind( 'active', function() { |
| 23 | self.init(); |
| 24 | } ); |
27 | 25 | } ); |
28 | 26 | |
29 | 27 | /** |
… |
… |
wp.customize.menusPreview = ( function( $, api ) { |
36 | 34 | $.extend( self, _wpCustomizePreviewNavMenusExports ); |
37 | 35 | } |
38 | 36 | |
39 | | self.previewReady.done( function() { |
40 | | api.each( function( setting, id ) { |
41 | | setting.id = id; |
42 | | self.bindListener( setting ); |
43 | | } ); |
| 37 | api.each( function( setting, id ) { |
| 38 | setting.id = id; |
| 39 | self.bindListener( setting ); |
| 40 | } ); |
44 | 41 | |
45 | | api.preview.bind( 'setting', function( args ) { |
46 | | var id, value, setting; |
47 | | args = args.slice(); |
48 | | id = args.shift(); |
49 | | value = args.shift(); |
50 | | if ( ! api.has( id ) ) { |
51 | | // Currently customize-preview.js is not creating settings for dynamically-created settings in the pane; so we have to do it |
52 | | setting = api.create( id, value ); // @todo This should be in core |
53 | | setting.id = id; |
54 | | if ( self.bindListener( setting ) ) { |
55 | | setting.callbacks.fireWith( setting, [ setting(), setting() ] ); |
56 | | } |
| 42 | api.preview.bind( 'setting', function( args ) { |
| 43 | var id, value, setting; |
| 44 | args = args.slice(); |
| 45 | id = args.shift(); |
| 46 | value = args.shift(); |
| 47 | if ( ! api.has( id ) ) { |
| 48 | // Currently customize-preview.js is not creating settings for dynamically-created settings in the pane; so we have to do it |
| 49 | setting = api.create( id, value ); // @todo This should be in core |
| 50 | setting.id = id; |
| 51 | if ( self.bindListener( setting ) ) { |
| 52 | setting.callbacks.fireWith( setting, [ setting(), null ] ); |
57 | 53 | } |
58 | | } ); |
| 54 | } |
59 | 55 | } ); |
60 | 56 | }; |
61 | 57 | |
diff --git tests/phpunit/tests/customize/nav-menus.php tests/phpunit/tests/customize/nav-menus.php
index 7c0ee3d..616bf0b 100644
|
|
class Test_WP_Customize_Nav_Menus extends WP_UnitTestCase { |
358 | 358 | |
359 | 359 | $expected = array( |
360 | 360 | 'echo', |
361 | | 'args_hash', |
362 | 361 | 'can_partial_refresh', |
363 | 362 | 'fallback_cb', |
364 | 363 | 'instance_number', |
… |
… |
class Test_WP_Customize_Nav_Menus extends WP_UnitTestCase { |
370 | 369 | 'walker' => new Walker_Nav_Menu(), |
371 | 370 | ) ); |
372 | 371 | $this->assertEqualSets( $expected, array_keys( $results ) ); |
373 | | $this->assertEquals( '', $results['fallback_cb'] ); |
374 | | $this->assertEquals( '', $results['walker'] ); |
| 372 | $this->assertEquals( 'wp_page_menu', $results['fallback_cb'] ); |
375 | 373 | $this->assertEquals( 0, $results['can_partial_refresh'] ); |
| 374 | |
| 375 | $this->assertNotEmpty( $menus->preview_nav_menu_instance_args[ $results['instance_number'] ] ); |
| 376 | $preview_nav_menu_instance_args = $menus->preview_nav_menu_instance_args[ $results['instance_number'] ]; |
| 377 | $this->assertEquals( '', $preview_nav_menu_instance_args['fallback_cb'] ); |
| 378 | $this->assertEquals( '', $preview_nav_menu_instance_args['walker'] ); |
| 379 | $this->assertNotEmpty( $preview_nav_menu_instance_args['args_hash'] ); |
376 | 380 | } |
377 | 381 | |
378 | 382 | /** |