$dbids_to_orders = array(); $orders_to_dbids = array(); foreach ((array) $ordered_menu_items as $ordered_menu_item_object) { if (isset($ordered_menu_item_object->ID)) { if (isset($ordered_menu_item_object->menu_order)) { $dbids_to_orders[$ordered_menu_item_object->ID] = $ordered_menu_item_object->menu_order; $orders_to_dbids[$ordered_menu_item_object->menu_order] = $ordered_menu_item_object->ID; } } } // if this menu item is not first if (!empty($dbids_to_orders[$menu_item_id]) && !empty($orders_to_dbids[$dbids_to_orders[$menu_item_id] - 1])) { // if this menu item is a child of the previous if (!empty($menu_item_data['menu_item_parent']) && in_array($menu_item_data['menu_item_parent'], array_keys($dbids_to_orders)) && isset($orders_to_dbids[$dbids_to_orders[$menu_item_id] - 1]) && $menu_item_data['menu_item_parent'] == $orders_to_dbids[$dbids_to_orders[$menu_item_id] - 1]) { $parent_db_id = in_array($menu_item_data['menu_item_parent'], $orders_to_dbids) ? (int) $menu_item_data['menu_item_parent'] : 0; $parent_object = nxt_setup_nav_menu_item(get_post($parent_db_id)); if (!is_nxt_error($parent_object)) { $parent_data = (array) $parent_object; // if there is something before the parent and parent a child of it, make menu item a child also of it if (!empty($dbids_to_orders[$parent_db_id]) && !empty($orders_to_dbids[$dbids_to_orders[$parent_db_id] - 1]) && !empty($parent_data['menu_item_parent'])) { $menu_item_data['menu_item_parent'] = $parent_data['menu_item_parent']; // else if there is something before parent and parent not a child of it, make menu item a child of that something's parent } elseif (!empty($dbids_to_orders[$parent_db_id]) && !empty($orders_to_dbids[$dbids_to_orders[$parent_db_id] - 1])) { $_possible_parent_id = (int) get_post_meta($orders_to_dbids[$dbids_to_orders[$parent_db_id] - 1], '_menu_item_menu_item_parent', true); if (in_array($_possible_parent_id, array_keys($dbids_to_orders))) { $menu_item_data['menu_item_parent'] = $_possible_parent_id; } else { $menu_item_data['menu_item_parent'] = 0; } // else there isn't something before the parent } else {
} $_menu_items = array_map('nxt_setup_nav_menu_item', array($_object)); $_menu_item = array_shift($_menu_items); // Restore the missing menu item properties $menu_item_data['menu-item-description'] = $_menu_item->description; } $menu_items_data[] = $menu_item_data; } $item_ids = nxt_save_nav_menu_items(0, $menu_items_data); if (is_nxt_error($item_ids)) { die('-1'); } foreach ((array) $item_ids as $menu_item_id) { $menu_obj = get_post($menu_item_id); if (!empty($menu_obj->ID)) { $menu_obj = nxt_setup_nav_menu_item($menu_obj); $menu_obj->label = $menu_obj->title; // don't show "(pending)" in ajax-added items $menu_items[] = $menu_obj; } } if (!empty($menu_items)) { $args = array('after' => '', 'before' => '', 'link_after' => '', 'link_before' => '', 'walker' => new Walker_Nav_Menu_Edit()); echo walk_nav_menu_tree($menu_items, 0, (object) $args); } break; case 'add-meta': check_ajax_referer('add-meta', '_ajax_nonce-add-meta'); $c = 0; $pid = (int) $_POST['post_id']; $post = get_post($pid);