Menus: Compare `$menu_item->ID` and `$menu_item->menu_item_parent` as strings and avoid moidifying them. Plugins may change the ID to a string.

Props Chouby, peterwilsoncc, Chrystl, manooweb, azaozz.
Fixes #57169.
Built from https://develop.svn.wordpress.org/trunk@55059


git-svn-id: http://core.svn.wordpress.org/trunk@54592 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
Andrew Ozz 2023-01-12 23:24:12 +00:00
parent e87b8157cb
commit 0380c40190
2 changed files with 7 additions and 3 deletions

View File

@ -198,8 +198,12 @@ function wp_nav_menu( $args = array() ) {
$sorted_menu_items = array(); $sorted_menu_items = array();
$menu_items_with_children = array(); $menu_items_with_children = array();
foreach ( (array) $menu_items as $menu_item ) { foreach ( (array) $menu_items as $menu_item ) {
// Fix invalid `menu_item_parent`. See: https://core.trac.wordpress.org/ticket/56926. /*
if ( (int) $menu_item->ID === (int) $menu_item->menu_item_parent ) { * Fix invalid `menu_item_parent`. See: https://core.trac.wordpress.org/ticket/56926.
* Compare as strings. Plugins may change the ID to string.
* To avoid modifying the object, use `strval()` rather than casting to (string).
*/
if ( strval( $menu_item->ID ) === strval( $menu_item->menu_item_parent ) ) {
$menu_item->menu_item_parent = 0; $menu_item->menu_item_parent = 0;
} }

View File

@ -16,7 +16,7 @@
* *
* @global string $wp_version * @global string $wp_version
*/ */
$wp_version = '6.2-alpha-55058'; $wp_version = '6.2-alpha-55059';
/** /**
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema. * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.