Пример #1
0
 $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 {
Пример #2
0
             }
             $_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);