Make WordPress Core


Ignore:
Timestamp:
01/12/2022 11:23:41 PM (4 years ago)
Author:
audrasjb
Message:

Administration: Ensure an integer is used for menu priority in add_menu_page().

This change adds a verification of the $position parameter in add_menu_page() to ensure an integer is used. If not, the function informs developers of the wrong parameter type via a _doing_it_wrong message. This brings consistency with a similar check used in add_submenu_page().

This change also typecasts any floating number to string to ensure that in case a float value was passed, at least it doesn't override existing menus.

Follow-up to [46570].

Props kirtan95.
Fixes #54798. See #48249.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-admin/includes/plugin.php

    r52352 r52569  
    13301330        $menu[ "$position" ] = $new_menu;
    13311331    } else {
     1332        if ( ! is_int( $position ) ) {
     1333            _doing_it_wrong(
     1334                __FUNCTION__,
     1335                sprintf(
     1336                /* translators: %s: add_submenu_page() */
     1337                    __( 'The seventh parameter passed to %s should be an integer representing menu position.' ),
     1338                    '<code>add_menu_page()</code>'
     1339                ),
     1340                '6.0.0'
     1341            );
     1342            // If the position is not a string (i.e. float), convert it to string.
     1343            if ( ! is_string( $position ) ) {
     1344                $position = (string) $position;
     1345            }
     1346        }
    13321347        $menu[ $position ] = $new_menu;
    13331348    }
Note: See TracChangeset for help on using the changeset viewer.