Make WordPress Core


Ignore:
Timestamp:
12/14/2022 10:52:11 PM (2 years ago)
Author:
azaozz
Message:

Menus: Reset menu_item_parent to 0 when the parent is set to the item itself.

Props: peterwilsoncc, SergeyBiryukov, azaozz.
Fixes #57169.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-admin/nav-menus.php

    r54834 r54973  
    118118                            $parent_data                        = (array) $parent_object;
    119119                            $menu_item_data['menu_item_parent'] = $parent_data['menu_item_parent'];
     120
     121                            // Reset invalid `menu_item_parent`.
     122                            $menu_item_data = _wp_reset_invalid_menu_item_parent( $menu_item_data );
     123
    120124                            update_post_meta( $menu_item_data['ID'], '_menu_item_menu_item_parent', (int) $menu_item_data['menu_item_parent'] );
    121125                        }
     
    127131
    128132                        $menu_item_data['menu_item_parent'] = $next_item_data['ID'];
     133
     134                        // Reset invalid `menu_item_parent`.
     135                        $menu_item_data = _wp_reset_invalid_menu_item_parent( $menu_item_data );
     136
    129137                        update_post_meta( $menu_item_data['ID'], '_menu_item_menu_item_parent', (int) $menu_item_data['menu_item_parent'] );
    130138
     
    138146                ) {
    139147                    $menu_item_data['menu_item_parent'] = (int) get_post_meta( $menu_item_data['menu_item_parent'], '_menu_item_menu_item_parent', true );
     148
     149                    // Reset invalid `menu_item_parent`.
     150                    $menu_item_data = _wp_reset_invalid_menu_item_parent( $menu_item_data );
     151
    140152                    update_post_meta( $menu_item_data['ID'], '_menu_item_menu_item_parent', (int) $menu_item_data['menu_item_parent'] );
    141153                }
     
    248260                        // Just make it a child of the previous; keep the order.
    249261                        $menu_item_data['menu_item_parent'] = (int) $orders_to_dbids[ $dbids_to_orders[ $menu_item_id ] - 1 ];
     262
     263                        // Reset invalid `menu_item_parent`.
     264                        $menu_item_data = _wp_reset_invalid_menu_item_parent( $menu_item_data );
     265
    250266                        update_post_meta( $menu_item_data['ID'], '_menu_item_menu_item_parent', (int) $menu_item_data['menu_item_parent'] );
    251267                        wp_update_post( $menu_item_data );
Note: See TracChangeset for help on using the changeset viewer.