diff -r 7b1b88e27a20 -r 48c4eec2b7e6 wp/wp-admin/includes/menu.php --- a/wp/wp-admin/includes/menu.php Thu Sep 29 08:06:27 2022 +0200 +++ b/wp/wp-admin/includes/menu.php Fri Sep 05 18:40:08 2025 +0200 @@ -13,8 +13,8 @@ * * The hook fires before menus and sub-menus are removed based on user privileges. * - * @private * @since 3.1.0 + * @access private */ do_action( '_network_admin_menu' ); } elseif ( is_user_admin() ) { @@ -24,8 +24,8 @@ * * The hook fires before menus and sub-menus are removed based on user privileges. * - * @private * @since 3.1.0 + * @access private */ do_action( '_user_admin_menu' ); } else { @@ -35,8 +35,8 @@ * * The hook fires before menus and sub-menus are removed based on user privileges. * - * @private * @since 2.2.0 + * @access private */ do_action( '_admin_menu' ); } @@ -44,11 +44,13 @@ // Create list of page plugin hook names. foreach ( $menu as $menu_page ) { $pos = strpos( $menu_page[2], '?' ); + if ( false !== $pos ) { // Handle post_type=post|page|foo pages. $hook_name = substr( $menu_page[2], 0, $pos ); $hook_args = substr( $menu_page[2], $pos + 1 ); wp_parse_str( $hook_args, $hook_args ); + // Set the hook name to be the post type. if ( isset( $hook_args['post_type'] ) ) { $hook_name = $hook_args['post_type']; @@ -59,6 +61,7 @@ } else { $hook_name = basename( $menu_page[2], '.php' ); } + $hook_name = sanitize_title( $hook_name ); if ( isset( $compat[ $hook_name ] ) ) { @@ -98,17 +101,20 @@ if ( empty( $submenu[ $data[2] ] ) ) { continue; } + $subs = $submenu[ $data[2] ]; $first_sub = reset( $subs ); $old_parent = $data[2]; $new_parent = $first_sub[2]; + /* * If the first submenu is not the same as the assigned parent, * make the first submenu the new parent. */ - if ( $new_parent != $old_parent ) { + if ( $new_parent !== $old_parent ) { $_wp_real_parent_file[ $old_parent ] = $new_parent; - $menu[ $id ][2] = $new_parent; + + $menu[ $id ][2] = $new_parent; foreach ( $submenu[ $old_parent ] as $index => $data ) { $submenu[ $new_parent ][ $index ] = $submenu[ $old_parent ][ $index ]; @@ -171,7 +177,8 @@ if ( ! empty( $submenu[ $data[2] ] ) && 1 === count( $submenu[ $data[2] ] ) ) { $subs = $submenu[ $data[2] ]; $first_sub = reset( $subs ); - if ( $data[2] == $first_sub[2] ) { + + if ( $data[2] === $first_sub[2] ) { unset( $submenu[ $data[2] ] ); } } @@ -217,32 +224,36 @@ $first_item = false; $last_order = false; $items_count = count( $menu ); - $i = 0; + + $i = 0; foreach ( $menu as $order => $top ) { - $i++; + ++$i; - if ( 0 == $order ) { // Dashboard is always shown/single. + if ( 0 === $order ) { // Dashboard is always shown/single. $menu[0][4] = add_cssclass( 'menu-top-first', $top[4] ); $last_order = 0; continue; } - if ( 0 === strpos( $top[2], 'separator' ) && false !== $last_order ) { // If separator. - $first_item = true; - $classes = $menu[ $last_order ][4]; + if ( str_starts_with( $top[2], 'separator' ) && false !== $last_order ) { // If separator. + $first_item = true; + $classes = $menu[ $last_order ][4]; + $menu[ $last_order ][4] = add_cssclass( 'menu-top-last', $classes ); continue; } if ( $first_item ) { - $classes = $menu[ $order ][4]; + $first_item = false; + $classes = $menu[ $order ][4]; + $menu[ $order ][4] = add_cssclass( 'menu-top-first', $classes ); - $first_item = false; } - if ( $i == $items_count ) { // Last item. - $classes = $menu[ $order ][4]; + if ( $i === $items_count ) { // Last item. + $classes = $menu[ $order ][4]; + $menu[ $order ][4] = add_cssclass( 'menu-top-last', $classes ); } @@ -272,10 +283,12 @@ */ if ( apply_filters( 'custom_menu_order', false ) ) { $menu_order = array(); + foreach ( $menu as $menu_item ) { $menu_order[] = $menu_item[2]; } unset( $menu_item ); + $default_menu_order = $menu_order; /** @@ -290,8 +303,9 @@ * * @param array $menu_order An ordered array of menu items. */ - $menu_order = apply_filters( 'menu_order', $menu_order ); - $menu_order = array_flip( $menu_order ); + $menu_order = apply_filters( 'menu_order', $menu_order ); + $menu_order = array_flip( $menu_order ); + $default_menu_order = array_flip( $default_menu_order ); /** @@ -304,14 +318,16 @@ */ function sort_menu( $a, $b ) { global $menu_order, $default_menu_order; + $a = $a[2]; $b = $b[2]; + if ( isset( $menu_order[ $a ] ) && ! isset( $menu_order[ $b ] ) ) { return -1; } elseif ( ! isset( $menu_order[ $a ] ) && isset( $menu_order[ $b ] ) ) { return 1; } elseif ( isset( $menu_order[ $a ] ) && isset( $menu_order[ $b ] ) ) { - if ( $menu_order[ $a ] == $menu_order[ $b ] ) { + if ( $menu_order[ $a ] === $menu_order[ $b ] ) { return 0; } return ( $menu_order[ $a ] < $menu_order[ $b ] ) ? -1 : 1;