wp/wp-admin/nav-menus.php
changeset 16 a86126ab1dd4
parent 9 177826044cd9
child 18 be944660c56a
--- a/wp/wp-admin/nav-menus.php	Tue Oct 22 16:11:46 2019 +0200
+++ b/wp/wp-admin/nav-menus.php	Tue Dec 15 13:49:49 2020 +0100
@@ -10,16 +10,16 @@
  */
 
 /** Load WordPress Administration Bootstrap */
-require_once( dirname( __FILE__ ) . '/admin.php' );
+require_once __DIR__ . '/admin.php';
 
-// Load all the nav menu interface functions
-require_once( ABSPATH . 'wp-admin/includes/nav-menu.php' );
+// Load all the nav menu interface functions.
+require_once ABSPATH . 'wp-admin/includes/nav-menu.php';
 
 if ( ! current_theme_supports( 'menus' ) && ! current_theme_supports( 'widgets' ) ) {
 	wp_die( __( 'Your theme does not support navigation menus or widgets.' ) );
 }
 
-// Permissions Check
+// Permissions check.
 if ( ! current_user_can( 'edit_theme_options' ) ) {
 	wp_die(
 		'<h1>' . __( 'You need a higher level of permission.' ) . '</h1>' .
@@ -34,21 +34,21 @@
 	wp_enqueue_script( 'jquery-touch-punch' );
 }
 
-// Container for any messages displayed to the user
+// Container for any messages displayed to the user.
 $messages = array();
 
-// Container that stores the name of the active menu
+// Container that stores the name of the active menu.
 $nav_menu_selected_title = '';
 
-// The menu id of the current menu being edited
+// The menu id of the current menu being edited.
 $nav_menu_selected_id = isset( $_REQUEST['menu'] ) ? (int) $_REQUEST['menu'] : 0;
 
-// Get existing menu locations assignments
+// Get existing menu locations assignments.
 $locations      = get_registered_nav_menus();
 $menu_locations = get_nav_menu_locations();
 $num_locations  = count( array_keys( $locations ) );
 
-// Allowed actions: add, update, delete
+// Allowed actions: add, update, delete.
 $action = isset( $_REQUEST['action'] ) ? $_REQUEST['action'] : 'edit';
 
 /*
@@ -60,18 +60,24 @@
 switch ( $action ) {
 	case 'add-menu-item':
 		check_admin_referer( 'add-menu_item', 'menu-settings-column-nonce' );
+
 		if ( isset( $_REQUEST['nav-menu-locations'] ) ) {
 			set_theme_mod( 'nav_menu_locations', array_map( 'absint', $_REQUEST['menu-locations'] ) );
 		} elseif ( isset( $_REQUEST['menu-item'] ) ) {
 			wp_save_nav_menu_items( $nav_menu_selected_id, $_REQUEST['menu-item'] );
 		}
+
 		break;
+
 	case 'move-down-menu-item':
 		// Moving down a menu item is the same as moving up the next in order.
 		check_admin_referer( 'move-menu_item' );
+
 		$menu_item_id = isset( $_REQUEST['menu-item'] ) ? (int) $_REQUEST['menu-item'] : 0;
+
 		if ( is_nav_menu_item( $menu_item_id ) ) {
 			$menus = isset( $_REQUEST['menu'] ) ? array( (int) $_REQUEST['menu'] ) : wp_get_object_terms( $menu_item_id, 'nav_menu', array( 'fields' => 'ids' ) );
+
 			if ( ! is_wp_error( $menus ) && ! empty( $menus[0] ) ) {
 				$menu_id            = (int) $menus[0];
 				$ordered_menu_items = wp_get_nav_menu_items( $menu_id );
@@ -80,6 +86,7 @@
 				// Set up the data we need in one pass through the array of menu items.
 				$dbids_to_orders = array();
 				$orders_to_dbids = array();
+
 				foreach ( (array) $ordered_menu_items as $ordered_menu_item_object ) {
 					if ( isset( $ordered_menu_item_object->ID ) ) {
 						if ( isset( $ordered_menu_item_object->menu_order ) ) {
@@ -90,22 +97,20 @@
 				}
 
 				// Get next in order.
-				if (
-					isset( $orders_to_dbids[ $dbids_to_orders[ $menu_item_id ] + 1 ] )
-				) {
+				if ( isset( $orders_to_dbids[ $dbids_to_orders[ $menu_item_id ] + 1 ] ) ) {
 					$next_item_id   = $orders_to_dbids[ $dbids_to_orders[ $menu_item_id ] + 1 ];
 					$next_item_data = (array) wp_setup_nav_menu_item( get_post( $next_item_id ) );
 
 					// If not siblings of same parent, bubble menu item up but keep order.
-					if (
-						! empty( $menu_item_data['menu_item_parent'] ) &&
-						(
-							empty( $next_item_data['menu_item_parent'] ) ||
-							$next_item_data['menu_item_parent'] != $menu_item_data['menu_item_parent']
-						)
+					if ( ! empty( $menu_item_data['menu_item_parent'] )
+						&& ( empty( $next_item_data['menu_item_parent'] )
+							|| (int) $next_item_data['menu_item_parent'] !== (int) $menu_item_data['menu_item_parent'] )
 					) {
-
-						$parent_db_id = in_array( $menu_item_data['menu_item_parent'], $orders_to_dbids ) ? (int) $menu_item_data['menu_item_parent'] : 0;
+						if ( in_array( (int) $menu_item_data['menu_item_parent'], $orders_to_dbids, true ) ) {
+							$parent_db_id = (int) $menu_item_data['menu_item_parent'];
+						} else {
+							$parent_db_id = 0;
+						}
 
 						$parent_object = wp_setup_nav_menu_item( get_post( $parent_db_id ) );
 
@@ -113,7 +118,6 @@
 							$parent_data                        = (array) $parent_object;
 							$menu_item_data['menu_item_parent'] = $parent_data['menu_item_parent'];
 							update_post_meta( $menu_item_data['ID'], '_menu_item_menu_item_parent', (int) $menu_item_data['menu_item_parent'] );
-
 						}
 
 						// Make menu item a child of its next sibling.
@@ -129,9 +133,8 @@
 					}
 
 					// The item is last but still has a parent, so bubble up.
-				} elseif (
-					! empty( $menu_item_data['menu_item_parent'] ) &&
-					in_array( $menu_item_data['menu_item_parent'], $orders_to_dbids )
+				} elseif ( ! empty( $menu_item_data['menu_item_parent'] )
+					&& in_array( (int) $menu_item_data['menu_item_parent'], $orders_to_dbids, true )
 				) {
 					$menu_item_data['menu_item_parent'] = (int) get_post_meta( $menu_item_data['menu_item_parent'], '_menu_item_menu_item_parent', true );
 					update_post_meta( $menu_item_data['ID'], '_menu_item_menu_item_parent', (int) $menu_item_data['menu_item_parent'] );
@@ -140,11 +143,19 @@
 		}
 
 		break;
+
 	case 'move-up-menu-item':
 		check_admin_referer( 'move-menu_item' );
+
 		$menu_item_id = isset( $_REQUEST['menu-item'] ) ? (int) $_REQUEST['menu-item'] : 0;
+
 		if ( is_nav_menu_item( $menu_item_id ) ) {
-			$menus = isset( $_REQUEST['menu'] ) ? array( (int) $_REQUEST['menu'] ) : wp_get_object_terms( $menu_item_id, 'nav_menu', array( 'fields' => 'ids' ) );
+			if ( isset( $_REQUEST['menu'] ) ) {
+				$menus = array( (int) $_REQUEST['menu'] );
+			} else {
+				$menus = wp_get_object_terms( $menu_item_id, 'nav_menu', array( 'fields' => 'ids' ) );
+			}
+
 			if ( ! is_wp_error( $menus ) && ! empty( $menus[0] ) ) {
 				$menu_id            = (int) $menus[0];
 				$ordered_menu_items = wp_get_nav_menu_items( $menu_id );
@@ -153,6 +164,7 @@
 				// Set up the data we need in one pass through the array of menu items.
 				$dbids_to_orders = array();
 				$orders_to_dbids = array();
+
 				foreach ( (array) $ordered_menu_items as $ordered_menu_item_object ) {
 					if ( isset( $ordered_menu_item_object->ID ) ) {
 						if ( isset( $ordered_menu_item_object->menu_order ) ) {
@@ -163,16 +175,22 @@
 				}
 
 				// If this menu item is not first.
-				if ( ! empty( $dbids_to_orders[ $menu_item_id ] ) && ! empty( $orders_to_dbids[ $dbids_to_orders[ $menu_item_id ] - 1 ] ) ) {
+				if ( ! empty( $dbids_to_orders[ $menu_item_id ] )
+					&& ! empty( $orders_to_dbids[ $dbids_to_orders[ $menu_item_id ] - 1 ] )
+				) {
 
 					// If this menu item is a child of the previous.
-					if (
-						! empty( $menu_item_data['menu_item_parent'] ) &&
-						in_array( $menu_item_data['menu_item_parent'], array_keys( $dbids_to_orders ) ) &&
-						isset( $orders_to_dbids[ $dbids_to_orders[ $menu_item_id ] - 1 ] ) &&
-						( $menu_item_data['menu_item_parent'] == $orders_to_dbids[ $dbids_to_orders[ $menu_item_id ] - 1 ] )
+					if ( ! empty( $menu_item_data['menu_item_parent'] )
+						&& in_array( (int) $menu_item_data['menu_item_parent'], array_keys( $dbids_to_orders ), true )
+						&& isset( $orders_to_dbids[ $dbids_to_orders[ $menu_item_id ] - 1 ] )
+						&& ( (int) $menu_item_data['menu_item_parent'] === $orders_to_dbids[ $dbids_to_orders[ $menu_item_id ] - 1 ] )
 					) {
-						$parent_db_id  = in_array( $menu_item_data['menu_item_parent'], $orders_to_dbids ) ? (int) $menu_item_data['menu_item_parent'] : 0;
+						if ( in_array( (int) $menu_item_data['menu_item_parent'], $orders_to_dbids, true ) ) {
+							$parent_db_id = (int) $menu_item_data['menu_item_parent'];
+						} else {
+							$parent_db_id = 0;
+						}
+
 						$parent_object = wp_setup_nav_menu_item( get_post( $parent_db_id ) );
 
 						if ( ! is_wp_error( $parent_object ) ) {
@@ -182,10 +200,9 @@
 							 * If there is something before the parent and parent a child of it,
 							 * make menu item a child also of it.
 							 */
-							if (
-								! empty( $dbids_to_orders[ $parent_db_id ] ) &&
-								! empty( $orders_to_dbids[ $dbids_to_orders[ $parent_db_id ] - 1 ] ) &&
-								! empty( $parent_data['menu_item_parent'] )
+							if ( ! empty( $dbids_to_orders[ $parent_db_id ] )
+								&& ! empty( $orders_to_dbids[ $dbids_to_orders[ $parent_db_id ] - 1 ] )
+								&& ! empty( $parent_data['menu_item_parent'] )
 							) {
 								$menu_item_data['menu_item_parent'] = $parent_data['menu_item_parent'];
 
@@ -193,12 +210,12 @@
 								* Else if there is something before parent and parent not a child of it,
 								* make menu item a child of that something's parent
 								*/
-							} elseif (
-								! empty( $dbids_to_orders[ $parent_db_id ] ) &&
-								! empty( $orders_to_dbids[ $dbids_to_orders[ $parent_db_id ] - 1 ] )
+							} elseif ( ! empty( $dbids_to_orders[ $parent_db_id ] )
+								&& ! empty( $orders_to_dbids[ $dbids_to_orders[ $parent_db_id ] - 1 ] )
 							) {
 								$_possible_parent_id = (int) get_post_meta( $orders_to_dbids[ $dbids_to_orders[ $parent_db_id ] - 1 ], '_menu_item_menu_item_parent', true );
-								if ( in_array( $_possible_parent_id, array_keys( $dbids_to_orders ) ) ) {
+
+								if ( in_array( $_possible_parent_id, array_keys( $dbids_to_orders ), true ) ) {
 									$menu_item_data['menu_item_parent'] = $_possible_parent_id;
 								} else {
 									$menu_item_data['menu_item_parent'] = 0;
@@ -222,12 +239,11 @@
 						}
 
 						// Else this menu item is not a child of the previous.
-					} elseif (
-						empty( $menu_item_data['menu_order'] ) ||
-						empty( $menu_item_data['menu_item_parent'] ) ||
-						! in_array( $menu_item_data['menu_item_parent'], array_keys( $dbids_to_orders ) ) ||
-						empty( $orders_to_dbids[ $dbids_to_orders[ $menu_item_id ] - 1 ] ) ||
-						$orders_to_dbids[ $dbids_to_orders[ $menu_item_id ] - 1 ] != $menu_item_data['menu_item_parent']
+					} elseif ( empty( $menu_item_data['menu_order'] )
+						|| empty( $menu_item_data['menu_item_parent'] )
+						|| ! in_array( (int) $menu_item_data['menu_item_parent'], array_keys( $dbids_to_orders ), true )
+						|| empty( $orders_to_dbids[ $dbids_to_orders[ $menu_item_id ] - 1 ] )
+						|| $orders_to_dbids[ $dbids_to_orders[ $menu_item_id ] - 1 ] !== (int) $menu_item_data['menu_item_parent']
 					) {
 						// Just make it a child of the previous; keep the order.
 						$menu_item_data['menu_item_parent'] = (int) $orders_to_dbids[ $dbids_to_orders[ $menu_item_id ] - 1 ];
@@ -237,6 +253,7 @@
 				}
 			}
 		}
+
 		break;
 
 	case 'delete-menu-item':
@@ -247,10 +264,12 @@
 		if ( is_nav_menu_item( $menu_item_id ) && wp_delete_post( $menu_item_id, true ) ) {
 			$messages[] = '<div id="message" class="updated notice is-dismissible"><p>' . __( 'The menu item has been successfully deleted.' ) . '</p></div>';
 		}
+
 		break;
 
 	case 'delete':
 		check_admin_referer( 'delete-nav_menu-' . $nav_menu_selected_id );
+
 		if ( is_nav_menu( $nav_menu_selected_id ) ) {
 			$deletion = wp_delete_nav_menu( $nav_menu_selected_id );
 		} else {
@@ -268,16 +287,19 @@
 		} else {
 			$messages[] = '<div id="message" class="updated notice is-dismissible"><p>' . __( 'The menu has been successfully deleted.' ) . '</p></div>';
 		}
+
 		break;
 
 	case 'delete_menus':
 		check_admin_referer( 'nav_menus_bulk_actions' );
+
 		foreach ( $_REQUEST['delete_menus'] as $menu_id_to_delete ) {
 			if ( ! is_nav_menu( $menu_id_to_delete ) ) {
 				continue;
 			}
 
 			$deletion = wp_delete_nav_menu( $menu_id_to_delete );
+
 			if ( is_wp_error( $deletion ) ) {
 				$messages[]     = '<div id="message" class="error notice is-dismissible"><p>' . $deletion->get_error_message() . '</p></div>';
 				$deletion_error = true;
@@ -287,29 +309,20 @@
 		if ( empty( $deletion_error ) ) {
 			$messages[] = '<div id="message" class="updated notice is-dismissible"><p>' . __( 'Selected menus have been successfully deleted.' ) . '</p></div>';
 		}
+
 		break;
 
 	case 'update':
 		check_admin_referer( 'update-nav_menu', 'update-nav-menu-nonce' );
 
-		// Remove menu locations that have been unchecked.
-		foreach ( $locations as $location => $description ) {
-			if ( ( empty( $_POST['menu-locations'] ) || empty( $_POST['menu-locations'][ $location ] ) ) && isset( $menu_locations[ $location ] ) && $menu_locations[ $location ] == $nav_menu_selected_id ) {
-				unset( $menu_locations[ $location ] );
-			}
-		}
-
 		// Merge new and existing menu locations if any new ones are set.
 		if ( isset( $_POST['menu-locations'] ) ) {
 			$new_menu_locations = array_map( 'absint', $_POST['menu-locations'] );
 			$menu_locations     = array_merge( $menu_locations, $new_menu_locations );
 		}
 
-		// Set menu locations.
-		set_theme_mod( 'nav_menu_locations', $menu_locations );
-
 		// Add Menu.
-		if ( 0 == $nav_menu_selected_id ) {
+		if ( 0 === $nav_menu_selected_id ) {
 			$new_menu_title = trim( esc_html( $_POST['menu-name'] ) );
 
 			if ( $new_menu_title ) {
@@ -321,32 +334,50 @@
 					$_menu_object            = wp_get_nav_menu_object( $_nav_menu_selected_id );
 					$nav_menu_selected_id    = $_nav_menu_selected_id;
 					$nav_menu_selected_title = $_menu_object->name;
+
 					if ( isset( $_REQUEST['menu-item'] ) ) {
 						wp_save_nav_menu_items( $nav_menu_selected_id, absint( $_REQUEST['menu-item'] ) );
 					}
-					if ( isset( $_REQUEST['zero-menu-state'] ) ) {
-						// If there are menu items, add them
+
+					// Set the menu_location value correctly for the newly created menu.
+					foreach ( $menu_locations as $location => $id ) {
+						if ( 0 === $id ) {
+							$menu_locations[ $location ] = $nav_menu_selected_id;
+						}
+					}
+
+					set_theme_mod( 'nav_menu_locations', $menu_locations );
+
+					if ( isset( $_REQUEST['zero-menu-state'] ) || ! empty( $_POST['auto-add-pages'] ) ) {
+						// If there are menu items, add them.
 						wp_nav_menu_update_menu_items( $nav_menu_selected_id, $nav_menu_selected_title );
-						// Auto-save nav_menu_locations
+					}
+
+					if ( isset( $_REQUEST['zero-menu-state'] ) ) {
+						// Auto-save nav_menu_locations.
 						$locations = get_nav_menu_locations();
+
 						foreach ( $locations as $location => $menu_id ) {
 								$locations[ $location ] = $nav_menu_selected_id;
-								break; // There should only be 1
+								break; // There should only be 1.
 						}
+
 						set_theme_mod( 'nav_menu_locations', $locations );
 					}
+
 					if ( isset( $_REQUEST['use-location'] ) ) {
 						$locations      = get_registered_nav_menus();
 						$menu_locations = get_nav_menu_locations();
+
 						if ( isset( $locations[ $_REQUEST['use-location'] ] ) ) {
 							$menu_locations[ $_REQUEST['use-location'] ] = $nav_menu_selected_id;
 						}
+
 						set_theme_mod( 'nav_menu_locations', $menu_locations );
 					}
 
-					// $messages[] = '<div id="message" class="updated"><p>' . sprintf( __( '<strong>%s</strong> has been created.' ), $nav_menu_selected_title ) . '</p></div>';
 					wp_redirect( admin_url( 'nav-menus.php?menu=' . $_nav_menu_selected_id ) );
-					exit();
+					exit;
 				}
 			} else {
 				$messages[] = '<div id="message" class="error notice is-dismissible"><p>' . __( 'Please enter a valid menu name.' ) . '</p></div>';
@@ -354,10 +385,22 @@
 
 			// Update existing menu.
 		} else {
+			// Remove menu locations that have been unchecked.
+			foreach ( $locations as $location => $description ) {
+				if ( ( empty( $_POST['menu-locations'] ) || empty( $_POST['menu-locations'][ $location ] ) )
+					&& isset( $menu_locations[ $location ] ) && $menu_locations[ $location ] === $nav_menu_selected_id
+				) {
+					unset( $menu_locations[ $location ] );
+				}
+			}
+
+			// Set menu locations.
+			set_theme_mod( 'nav_menu_locations', $menu_locations );
 
 			$_menu_object = wp_get_nav_menu_object( $nav_menu_selected_id );
 
 			$menu_title = trim( esc_html( $_POST['menu-name'] ) );
+
 			if ( ! $menu_title ) {
 				$messages[] = '<div id="message" class="error notice is-dismissible"><p>' . __( 'Please enter a valid menu name.' ) . '</p></div>';
 				$menu_title = $_menu_object->name;
@@ -365,6 +408,7 @@
 
 			if ( ! is_wp_error( $_menu_object ) ) {
 				$_nav_menu_selected_id = wp_update_nav_menu_object( $nav_menu_selected_id, array( 'menu-name' => $menu_title ) );
+
 				if ( is_wp_error( $_nav_menu_selected_id ) ) {
 					$_menu_object = $_nav_menu_selected_id;
 					$messages[]   = '<div id="message" class="error notice is-dismissible"><p>' . $_nav_menu_selected_id->get_error_message() . '</p></div>';
@@ -379,17 +423,19 @@
 				$messages = array_merge( $messages, wp_nav_menu_update_menu_items( $_nav_menu_selected_id, $nav_menu_selected_title ) );
 
 				// If the menu ID changed, redirect to the new URL.
-				if ( $nav_menu_selected_id != $_nav_menu_selected_id ) {
+				if ( $nav_menu_selected_id !== $_nav_menu_selected_id ) {
 					wp_redirect( admin_url( 'nav-menus.php?menu=' . intval( $_nav_menu_selected_id ) ) );
-					exit();
+					exit;
 				}
 			}
 		}
+
 		break;
+
 	case 'locations':
 		if ( ! $num_locations ) {
 			wp_redirect( admin_url( 'nav-menus.php' ) );
-			exit();
+			exit;
 		}
 
 		add_filter( 'screen_options_show_screen', '__return_false' );
@@ -399,11 +445,12 @@
 
 			$new_menu_locations = array_map( 'absint', $_POST['menu-locations'] );
 			$menu_locations     = array_merge( $menu_locations, $new_menu_locations );
-			// Set menu locations
+			// Set menu locations.
 			set_theme_mod( 'nav_menu_locations', $menu_locations );
 
 			$messages[] = '<div id="message" class="updated notice is-dismissible"><p>' . __( 'Menu locations updated.' ) . '</p></div>';
 		}
+
 		break;
 }
 
@@ -412,33 +459,40 @@
 $menu_count = count( $nav_menus );
 
 // Are we on the add new screen?
-$add_new_screen = ( isset( $_GET['menu'] ) && 0 == $_GET['menu'] ) ? true : false;
+$add_new_screen = ( isset( $_GET['menu'] ) && 0 === (int) $_GET['menu'] ) ? true : false;
 
-$locations_screen = ( isset( $_GET['action'] ) && 'locations' == $_GET['action'] ) ? true : false;
+$locations_screen = ( isset( $_GET['action'] ) && 'locations' === $_GET['action'] ) ? true : false;
+
+$page_count = wp_count_posts( 'page' );
 
 /*
  * If we have one theme location, and zero menus, we take them right
  * into editing their first menu.
  */
-$page_count                  = wp_count_posts( 'page' );
-$one_theme_location_no_menus = ( 1 == count( get_registered_nav_menus() ) && ! $add_new_screen && empty( $nav_menus ) && ! empty( $page_count->publish ) ) ? true : false;
+if ( 1 === count( get_registered_nav_menus() ) && ! $add_new_screen
+	&& empty( $nav_menus ) && ! empty( $page_count->publish )
+) {
+	$one_theme_location_no_menus = true;
+} else {
+	$one_theme_location_no_menus = false;
+}
 
 $nav_menus_l10n = array(
 	'oneThemeLocationNoMenus' => $one_theme_location_no_menus,
 	'moveUp'                  => __( 'Move up one' ),
 	'moveDown'                => __( 'Move down one' ),
 	'moveToTop'               => __( 'Move to the top' ),
-	/* translators: %s: previous item name */
+	/* translators: %s: Previous item name. */
 	'moveUnder'               => __( 'Move under %s' ),
-	/* translators: %s: previous item name */
+	/* translators: %s: Previous item name. */
 	'moveOutFrom'             => __( 'Move out from under %s' ),
-	/* translators: %s: previous item name */
+	/* translators: %s: Previous item name. */
 	'under'                   => __( 'Under %s' ),
-	/* translators: %s: previous item name */
+	/* translators: %s: Previous item name. */
 	'outFrom'                 => __( 'Out from under %s' ),
-	/* translators: 1: item name, 2: item position, 3: total number of items */
+	/* translators: 1: Item name, 2: Item position, 3: Total number of items. */
 	'menuFocus'               => __( '%1$s. Menu item %2$d of %3$d.' ),
-	/* translators: 1: item name, 2: item position, 3: parent item name */
+	/* translators: 1: Item name, 2: Item position, 3: Parent item name. */
 	'subMenuFocus'            => __( '%1$s. Sub item number %2$d under %3$s.' ),
 );
 wp_localize_script( 'nav-menu', 'menus', $nav_menus_l10n );
@@ -447,7 +501,7 @@
  * Redirect to add screen if there are no menus and this users has either zero,
  * or more than 1 theme locations.
  */
-if ( 0 == $menu_count && ! $add_new_screen && ! $one_theme_location_no_menus ) {
+if ( 0 === $menu_count && ! $add_new_screen && ! $one_theme_location_no_menus ) {
 	wp_redirect( admin_url( 'nav-menus.php?action=edit&menu=0' ) );
 }
 
@@ -463,7 +517,7 @@
 }
 
 // On deletion of menu, if another menu exists, show it.
-if ( ! $add_new_screen && 0 < $menu_count && isset( $_GET['action'] ) && 'delete' == $_GET['action'] ) {
+if ( ! $add_new_screen && $menu_count > 0 && isset( $_GET['action'] ) && 'delete' === $_GET['action'] ) {
 	$nav_menu_selected_id = $nav_menus[0]->term_id;
 }
 
@@ -471,12 +525,12 @@
 if ( $one_theme_location_no_menus ) {
 	$nav_menu_selected_id = 0;
 } elseif ( empty( $nav_menu_selected_id ) && ! empty( $nav_menus ) && ! $add_new_screen ) {
-	// if we have no selection yet, and we have menus, set to the first one in the list.
+	// If we have no selection yet, and we have menus, set to the first one in the list.
 	$nav_menu_selected_id = $nav_menus[0]->term_id;
 }
 
 // Update the user's setting.
-if ( $nav_menu_selected_id != $recently_edited && is_nav_menu( $nav_menu_selected_id ) ) {
+if ( $nav_menu_selected_id !== $recently_edited && is_nav_menu( $nav_menu_selected_id ) ) {
 	update_user_meta( $current_user->ID, 'nav_menu_recently_edited', $nav_menu_selected_id );
 }
 
@@ -529,13 +583,22 @@
 wp_initial_nav_menu_meta_boxes();
 
 if ( ! current_theme_supports( 'menus' ) && ! $num_locations ) {
-	$messages[] = '<div id="message" class="updated"><p>' . sprintf( __( 'Your theme does not natively support menus, but you can use them in sidebars by adding a &#8220;Navigation Menu&#8221; widget on the <a href="%s">Widgets</a> screen.' ), admin_url( 'widgets.php' ) ) . '</p></div>';
+	$messages[] = '<div id="message" class="updated"><p>' . sprintf(
+		/* translators: %s: URL to Widgets screen. */
+		__( 'Your theme does not natively support menus, but you can use them in sidebars by adding a &#8220;Navigation Menu&#8221; widget on the <a href="%s">Widgets</a> screen.' ),
+		admin_url( 'widgets.php' )
+	) . '</p></div>';
 }
 
-if ( ! $locations_screen ) : // Main tab
-	$overview = '<p>' . __( 'This screen is used for managing your navigation menus.' ) . '</p>';
-	/* translators: 1: Widgets admin screen URL, 2 and 3: The name of the default themes */
-	$overview .= '<p>' . sprintf( __( 'Menus can be displayed in locations defined by your theme, even used in sidebars by adding a &#8220;Navigation Menu&#8221; widget on the <a href="%1$s">Widgets</a> screen. If your theme does not support the navigation menus feature (the default themes, %2$s and %3$s, do), you can learn about adding this support by following the Documentation link to the side.' ), admin_url( 'widgets.php' ), 'Twenty Seventeen', 'Twenty Nineteen' ) . '</p>';
+if ( ! $locations_screen ) : // Main tab.
+	$overview  = '<p>' . __( 'This screen is used for managing your navigation menus.' ) . '</p>';
+	$overview .= '<p>' . sprintf(
+		/* translators: 1: URL to Widgets screen, 2 and 3: The names of the default themes. */
+		__( 'Menus can be displayed in locations defined by your theme, even used in sidebars by adding a &#8220;Navigation Menu&#8221; widget on the <a href="%1$s">Widgets</a> screen. If your theme does not support the navigation menus feature (the default themes, %2$s and %3$s, do), you can learn about adding this support by following the Documentation link to the side.' ),
+		admin_url( 'widgets.php' ),
+		'Twenty Nineteen',
+		'Twenty Twenty'
+	) . '</p>';
 	$overview .= '<p>' . __( 'From this screen you can:' ) . '</p>';
 	$overview .= '<ul><li>' . __( 'Create, edit, and delete menus' ) . '</li>';
 	$overview .= '<li>' . __( 'Add, organize, and modify individual menu items' ) . '</li></ul>';
@@ -575,7 +638,7 @@
 			'content' => $editing_menus,
 		)
 	);
-else : // Locations Tab.
+else : // Locations tab.
 	$locations_overview  = '<p>' . __( 'This screen is used for globally assigning menus to locations defined by your theme.' ) . '</p>';
 	$locations_overview .= '<ul><li>' . __( 'To assign menus to one or more theme locations, <strong>select a menu from each location&#8217;s drop down.</strong> When you&#8217;re finished, <strong>click Save Changes</strong>' ) . '</li>';
 	$locations_overview .= '<li>' . __( 'To edit a menu currently assigned to a theme location, <strong>click the adjacent &#8217;Edit&#8217; link</strong>' ) . '</li>';
@@ -592,12 +655,12 @@
 
 get_current_screen()->set_help_sidebar(
 	'<p><strong>' . __( 'For more information:' ) . '</strong></p>' .
-	'<p>' . __( '<a href="https://codex.wordpress.org/Appearance_Menus_Screen">Documentation on Menus</a>' ) . '</p>' .
+	'<p>' . __( '<a href="https://wordpress.org/support/article/appearance-menus-screen/">Documentation on Menus</a>' ) . '</p>' .
 	'<p>' . __( '<a href="https://wordpress.org/support/">Support</a>' ) . '</p>'
 );
 
 // Get the admin header.
-require_once( ABSPATH . 'wp-admin/admin-header.php' );
+require_once ABSPATH . 'wp-admin/admin-header.php';
 ?>
 <div class="wrap">
 	<h1 class="wp-heading-inline"><?php echo esc_html( __( 'Menus' ) ); ?></h1>
@@ -621,7 +684,8 @@
 
 	$nav_tab_active_class = '';
 	$nav_aria_current     = '';
-	if ( ! isset( $_GET['action'] ) || isset( $_GET['action'] ) && 'locations' != $_GET['action'] ) {
+
+	if ( ! isset( $_GET['action'] ) || isset( $_GET['action'] ) && 'locations' !== $_GET['action'] ) {
 		$nav_tab_active_class = ' nav-tab-active';
 		$nav_aria_current     = ' aria-current="page"';
 	}
@@ -635,6 +699,7 @@
 		if ( $num_locations && $menu_count ) {
 			$active_tab_class = '';
 			$aria_current     = '';
+
 			if ( $locations_screen ) {
 				$active_tab_class = ' nav-tab-active';
 				$aria_current     = ' aria-current="page"';
@@ -652,10 +717,18 @@
 	?>
 	<?php
 	if ( $locations_screen ) :
-		if ( 1 == $num_locations ) {
+		if ( 1 === $num_locations ) {
 			echo '<p>' . __( 'Your theme supports one menu. Select which menu you would like to use.' ) . '</p>';
 		} else {
-			echo '<p>' . sprintf( _n( 'Your theme supports %s menu. Select which menu appears in each location.', 'Your theme supports %s menus. Select which menu appears in each location.', $num_locations ), number_format_i18n( $num_locations ) ) . '</p>';
+			echo '<p>' . sprintf(
+				/* translators: %s: Number of menus. */
+				_n(
+					'Your theme supports %s menu. Select which menu appears in each location.',
+					'Your theme supports %s menus. Select which menu appears in each location.',
+					$num_locations
+				),
+				number_format_i18n( $num_locations )
+			) . '</p>';
 		}
 		?>
 	<div id="menu-locations-wrap">
@@ -677,7 +750,8 @@
 								<?php
 								foreach ( $nav_menus as $menu ) :
 									$data_orig = '';
-									$selected  = isset( $menu_locations[ $_location ] ) && $menu_locations[ $_location ] == $menu->term_id;
+									$selected  = isset( $menu_locations[ $_location ] ) && $menu_locations[ $_location ] === $menu->term_id;
+
 									if ( $selected ) {
 										$data_orig = 'data-orig="true"';
 									}
@@ -688,7 +762,7 @@
 								<?php endforeach; ?>
 							</select>
 							<div class="locations-row-links">
-								<?php if ( isset( $menu_locations[ $_location ] ) && 0 != $menu_locations[ $_location ] ) : ?>
+								<?php if ( isset( $menu_locations[ $_location ] ) && 0 !== $menu_locations[ $_location ] ) : ?>
 								<span class="locations-edit-menu-link">
 									<a href="
 									<?php
@@ -728,7 +802,7 @@
 							</div><!-- .locations-row-links -->
 						</td><!-- .menu-location-menus -->
 					</tr><!-- .menu-locations-row -->
-				<?php } // foreach ?>
+				<?php } // End foreach. ?>
 				</tbody>
 			</table>
 			<p class="button-controls wp-clearfix"><?php submit_button( __( 'Save Changes' ), 'primary left', 'nav-menu-locations', false ); ?></p>
@@ -755,6 +829,7 @@
 		<span class="add-edit-menu-action">
 			<?php
 			printf(
+				/* translators: %s: URL to create a new menu. */
 				__( 'Edit your menu below, or <a href="%s">create a new menu</a>. Don&#8217;t forget to save your changes!' ),
 				esc_url(
 					add_query_arg(
@@ -782,9 +857,10 @@
 						<?php
 						echo esc_html( $_nav_menu->truncated_name );
 
-						if ( ! empty( $menu_locations ) && in_array( $_nav_menu->term_id, $menu_locations ) ) {
+						if ( ! empty( $menu_locations ) && in_array( $_nav_menu->term_id, $menu_locations, true ) ) {
 							$locations_assigned_to_this_menu = array();
-							foreach ( array_keys( $menu_locations, $_nav_menu->term_id ) as $menu_location_key ) {
+
+							foreach ( array_keys( $menu_locations, $_nav_menu->term_id, true ) as $menu_location_key ) {
 								if ( isset( $locations[ $menu_location_key ] ) ) {
 									$locations_assigned_to_this_menu[] = $locations[ $menu_location_key ];
 								}
@@ -797,7 +873,9 @@
 							 *
 							 * @param int $locations Number of menu locations to list. Default 3.
 							 */
-							$assigned_locations = array_slice( $locations_assigned_to_this_menu, 0, absint( apply_filters( 'wp_nav_locations_listed_per_menu', 3 ) ) );
+							$locations_listed_per_menu = absint( apply_filters( 'wp_nav_locations_listed_per_menu', 3 ) );
+
+							$assigned_locations = array_slice( $locations_assigned_to_this_menu, 0, $locations_listed_per_menu );
 
 							// Adds ellipses following the number of locations defined in $assigned_locations.
 							if ( ! empty( $assigned_locations ) ) {
@@ -816,6 +894,7 @@
 			<span class="add-new-menu-action">
 				<?php
 				printf(
+					/* translators: %s: URL to create a new menu. */
 					__( 'or <a href="%s">create a new menu</a>. Don&#8217;t forget to save your changes!' ),
 					esc_url(
 						add_query_arg(
@@ -835,7 +914,8 @@
 		endif;
 
 		$metabox_holder_disabled_class = '';
-		if ( isset( $_GET['menu'] ) && '0' == $_GET['menu'] ) {
+
+		if ( isset( $_GET['menu'] ) && 0 === (int) $_GET['menu'] ) {
 			$metabox_holder_disabled_class = ' metabox-holder-disabled';
 		}
 		?>
@@ -857,14 +937,8 @@
 	<div id="menu-management-liquid">
 		<div id="menu-management">
 			<form id="update-nav-menu" method="post" enctype="multipart/form-data">
-			<?php
-				$new_screen_class = '';
-			if ( $add_new_screen ) {
-				$new_screen_class = 'blank-slate';
-			}
-			?>
 				<h2><?php _e( 'Menu structure' ); ?></h2>
-				<div class="menu-edit <?php echo $new_screen_class; ?>">
+				<div class="menu-edit">
 					<input type="hidden" name="nav-menu-data">
 					<?php
 					wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false );
@@ -896,33 +970,45 @@
 					<div id="post-body">
 						<div id="post-body-content" class="wp-clearfix">
 							<?php if ( ! $add_new_screen ) : ?>
+
 								<?php
 								$hide_style = '';
-								if ( isset( $menu_items ) && 0 == count( $menu_items ) ) {
+
+								if ( isset( $menu_items ) && 0 === count( $menu_items ) ) {
 									$hide_style = 'style="display: none;"';
 								}
-								$starter_copy = ( $one_theme_location_no_menus ) ? __( 'Edit your default menu by adding or removing items. Drag each item into the order you prefer. Click Create Menu to save your changes.' ) : __( 'Drag each item into the order you prefer. Click the arrow on the right of the item to reveal additional configuration options.' );
+
+								if ( $one_theme_location_no_menus ) {
+									$starter_copy = __( 'Edit your default menu by adding or removing items. Drag the items into the order you prefer. Click Create Menu to save your changes.' );
+								} else {
+									$starter_copy = __( 'Drag the items into the order you prefer. Click the arrow on the right of the item to reveal additional configuration options.' );
+								}
 								?>
-							<div class="drag-instructions post-body-plain" <?php echo $hide_style; ?>>
-								<p><?php echo $starter_copy; ?></p>
-							</div>
+								<div class="drag-instructions post-body-plain" <?php echo $hide_style; ?>>
+									<p><?php echo $starter_copy; ?></p>
+								</div>
+
 								<?php
 								if ( isset( $edit_markup ) && ! is_wp_error( $edit_markup ) ) {
 									echo $edit_markup;
 								} else {
 									?>
-							<ul class="menu" id="menu-to-edit"></ul>
+									<ul class="menu" id="menu-to-edit"></ul>
 								<?php } ?>
+
 							<?php endif; ?>
+
 							<?php if ( $add_new_screen ) : ?>
 								<p class="post-body-plain" id="menu-name-desc"><?php _e( 'Give your menu a name, then click Create Menu.' ); ?></p>
 								<?php if ( isset( $_GET['use-location'] ) ) : ?>
 									<input type="hidden" name="use-location" value="<?php echo esc_attr( $_GET['use-location'] ); ?>" />
 								<?php endif; ?>
+
 								<?php
-								endif;
+							endif;
 
-								$no_menus_style = '';
+							$no_menus_style = '';
+
 							if ( $one_theme_location_no_menus ) {
 								$no_menus_style = 'style="display: none;"';
 							}
@@ -932,9 +1018,10 @@
 								<?php
 								if ( ! isset( $auto_add ) ) {
 									$auto_add = get_option( 'nav_menu_options' );
+
 									if ( ! isset( $auto_add['auto_add'] ) ) {
 										$auto_add = false;
-									} elseif ( false !== array_search( $nav_menu_selected_id, $auto_add['auto_add'] ) ) {
+									} elseif ( false !== array_search( $nav_menu_selected_id, $auto_add['auto_add'], true ) ) {
 										$auto_add = true;
 									} else {
 										$auto_add = false;
@@ -953,22 +1040,25 @@
 
 									<fieldset class="menu-settings-group menu-theme-locations">
 										<legend class="menu-settings-group-name howto"><?php _e( 'Display location' ); ?></legend>
-										<?php foreach ( $locations as $location => $description ) : ?>
-										<div class="menu-settings-input checkbox-input">
-											<input type="checkbox"<?php checked( isset( $menu_locations[ $location ] ) && $menu_locations[ $location ] == $nav_menu_selected_id ); ?> name="menu-locations[<?php echo esc_attr( $location ); ?>]" id="locations-<?php echo esc_attr( $location ); ?>" value="<?php echo esc_attr( $nav_menu_selected_id ); ?>" />
-											<label for="locations-<?php echo esc_attr( $location ); ?>"><?php echo $description; ?></label>
-											<?php if ( ! empty( $menu_locations[ $location ] ) && $menu_locations[ $location ] != $nav_menu_selected_id ) : ?>
-												<span class="theme-location-set">
-												<?php
-													printf(
-														/* translators: %s: menu name */
-														_x( '(Currently set to: %s)', 'menu location' ),
-														wp_get_nav_menu_object( $menu_locations[ $location ] )->name
-													);
-												?>
-												</span>
-											<?php endif; ?>
-										</div>
+										<?php
+										foreach ( $locations as $location => $description ) :
+											$checked = isset( $menu_locations[ $location ] ) && $menu_locations[ $location ] === $nav_menu_selected_id;
+											?>
+											<div class="menu-settings-input checkbox-input">
+												<input type="checkbox"<?php checked( $checked ); ?> name="menu-locations[<?php echo esc_attr( $location ); ?>]" id="locations-<?php echo esc_attr( $location ); ?>" value="<?php echo esc_attr( $nav_menu_selected_id ); ?>" />
+												<label for="locations-<?php echo esc_attr( $location ); ?>"><?php echo $description; ?></label>
+												<?php if ( ! empty( $menu_locations[ $location ] ) && $menu_locations[ $location ] !== $nav_menu_selected_id ) : ?>
+													<span class="theme-location-set">
+													<?php
+														printf(
+															/* translators: %s: Menu name. */
+															_x( '(Currently set to: %s)', 'menu location' ),
+															wp_get_nav_menu_object( $menu_locations[ $location ] )->name
+														);
+													?>
+													</span>
+												<?php endif; ?>
+											</div>
 										<?php endforeach; ?>
 									</fieldset>
 
@@ -979,25 +1069,33 @@
 					</div><!-- /#post-body -->
 					<div id="nav-menu-footer">
 						<div class="major-publishing-actions wp-clearfix">
-							<?php if ( 0 != $menu_count && ! $add_new_screen ) : ?>
-							<span class="delete-action">
-								<a class="submitdelete deletion menu-delete" href="
-								<?php
-								echo esc_url(
-									wp_nonce_url(
-										add_query_arg(
-											array(
-												'action' => 'delete',
-												'menu'   => $nav_menu_selected_id,
+							<?php if ( $menu_count > 0 ) : ?>
+
+								<?php if ( $add_new_screen ) : ?>
+								<span class="cancel-action">
+									<a class="submitcancel cancellation menu-cancel" href="<?php echo esc_url( admin_url( 'nav-menus.php' ) ); ?>"><?php _e( 'Cancel' ); ?></a>
+								</span><!-- END .cancel-action -->
+								<?php else : ?>
+								<span class="delete-action">
+									<a class="submitdelete deletion menu-delete" href="
+									<?php
+									echo esc_url(
+										wp_nonce_url(
+											add_query_arg(
+												array(
+													'action' => 'delete',
+													'menu' => $nav_menu_selected_id,
+												),
+												admin_url( 'nav-menus.php' )
 											),
-											admin_url( 'nav-menus.php' )
-										),
-										'delete-nav_menu-' . $nav_menu_selected_id
-									)
-								);
-								?>
-								"><?php _e( 'Delete Menu' ); ?></a>
-							</span><!-- END .delete-action -->
+											'delete-nav_menu-' . $nav_menu_selected_id
+										)
+									);
+									?>
+									"><?php _e( 'Delete Menu' ); ?></a>
+								</span><!-- END .delete-action -->
+								<?php endif; ?>
+
 							<?php endif; ?>
 							<div class="publishing-action">
 								<?php submit_button( empty( $nav_menu_selected_id ) ? __( 'Create Menu' ) : __( 'Save Menu' ), 'primary large menu-save', 'save_menu', false, array( 'id' => 'save_menu_footer' ) ); ?>
@@ -1011,4 +1109,4 @@
 	</div><!-- /#nav-menus-frame -->
 	<?php endif; ?>
 </div><!-- /.wrap-->
-<?php include( ABSPATH . 'wp-admin/admin-footer.php' ); ?>
+<?php require_once ABSPATH . 'wp-admin/admin-footer.php'; ?>