WordPress.org

Make WordPress Core

Ticket #40927: 40927.diff

File 40927.diff, 1.3 KB (added by dd32, 3 years ago)
  • src/wp-admin/includes/plugin.php

    function add_menu_page( $page_title, $me 
    10811081        $hookname = get_plugin_page_hookname( $menu_slug, '' );
    10821082
    10831083        if ( !empty( $function ) && !empty( $hookname ) && current_user_can( $capability ) )
    10841084                add_action( $hookname, $function );
    10851085
    10861086        if ( empty($icon_url) ) {
    10871087                $icon_url = 'dashicons-admin-generic';
    10881088                $icon_class = 'menu-icon-generic ';
    10891089        } else {
    10901090                $icon_url = set_url_scheme( $icon_url );
    10911091                $icon_class = '';
    10921092        }
    10931093
    10941094        $new_menu = array( $menu_title, $capability, $menu_slug, $page_title, 'menu-top ' . $icon_class . $hookname, $hookname, $icon_url );
    10951095
     1096        // PHP truncates floats to an int for array indicies.
     1097        if ( is_float( $position ) ) {
     1098                $position = (string) $position;
     1099        }
     1100
    10961101        if ( null === $position ) {
    10971102                $menu[] = $new_menu;
    10981103        } elseif ( isset( $menu[ "$position" ] ) ) {
    10991104                $position = $position + substr( base_convert( md5( $menu_slug . $menu_title ), 16, 10 ) , -5 ) * 0.00001;
    11001105                $menu[ "$position" ] = $new_menu;
    11011106        } else {
    11021107                $menu[ $position ] = $new_menu;
    11031108        }
    11041109
    11051110        $_registered_pages[$hookname] = true;
    11061111
    11071112        // No parent as top level
    11081113        $_parent_pages[$menu_slug] = false;
    11091114
    11101115        return $hookname;