Ticket #39665: 39665.4.diff
File 39665.4.diff, 2.9 KB (added by , 8 years ago) |
---|
-
src/wp-includes/class-wp-customize-nav-menus.php
1274 1274 ksort( $exported_args ); 1275 1275 $exported_args['args_hmac'] = $this->hash_nav_menu_args( $exported_args ); 1276 1276 1277 // Add edit shortcuts to fallbacks. See #39665. 1278 if ( $can_partial_refresh && is_callable( $exported_args['fallback_cb'] ) ) { 1279 $args['fallback_cb'] = array( $this, 'echo_preview_nav_menu_args_fallback_with_partial_refresh' ); 1280 } 1281 1277 1282 $args['customize_preview_nav_menus_args'] = $exported_args; 1278 1283 $this->preview_nav_menu_instance_args[ $exported_args['args_hmac'] ] = $exported_args; 1284 1279 1285 return $args; 1280 1286 } 1281 1287 … … 1289 1295 * 1290 1296 * @see wp_nav_menu() 1291 1297 * 1292 * @param string $nav_menu_content The HTML content for the navigation menu.1293 * @param object $args An object containingwp_nav_menu() arguments.1298 * @param string $nav_menu_content The HTML content for the navigation menu. 1299 * @param object|array $args wp_nav_menu() arguments. 1294 1300 * @return null 1295 1301 */ 1296 1302 public function filter_wp_nav_menu( $nav_menu_content, $args ) { 1303 $args = (object) $args; 1297 1304 if ( isset( $args->customize_preview_nav_menus_args['can_partial_refresh'] ) && $args->customize_preview_nav_menus_args['can_partial_refresh'] ) { 1298 1305 $attributes = sprintf( ' data-customize-partial-id="%s"', esc_attr( 'nav_menu_instance[' . $args->customize_preview_nav_menus_args['args_hmac'] . ']' ) ); 1299 1306 $attributes .= ' data-customize-partial-type="nav_menu_instance"'; … … 1320 1327 } 1321 1328 1322 1329 /** 1330 * Wraps a previewed nav menu's `fallback_cb` output with attributes for partial refresh. 1331 * 1332 * @param array $args Array of nav menu arguments. 1333 */ 1334 public function echo_preview_nav_menu_args_fallback_with_partial_refresh( $args ) { 1335 if ( ! empty( $args['customize_preview_nav_menus_args']['fallback_cb'] ) ) { 1336 ob_start(); 1337 call_user_func( $args['customize_preview_nav_menus_args']['fallback_cb'], $args ); 1338 echo $this->filter_wp_nav_menu( ob_get_clean(), $args ); 1339 } 1340 } 1341 1342 /** 1323 1343 * Enqueue scripts for the Customizer preview. 1324 1344 * 1325 1345 * @since 4.3.0 -
src/wp-includes/js/customize-preview-nav-menus.js
212 212 } else if ( partial.params.navMenuArgs.theme_location && api.has( 'nav_menu_locations[' + partial.params.navMenuArgs.theme_location + ']' ) ) { 213 213 menuId = api( 'nav_menu_locations[' + partial.params.navMenuArgs.theme_location + ']' ).get(); 214 214 } 215 if ( ! menuId ) {215 if ( ! menuId && ! partial.params.navMenuArgs.fallback_cb ) { 216 216 partial.fallback(); 217 217 deferred.reject(); 218 218 return deferred.promise();