Example #1
0
nxt_enqueue_script('postbox');
// Container for any messages displayed to the user
$messages = array();
// Container that stores the name of the active menu
$nav_menu_selected_title = '';
// The menu id of the current menu being edited
$nav_menu_selected_id = isset($_REQUEST['menu']) ? (int) $_REQUEST['menu'] : 0;
// Allowed actions: add, update, delete
$action = isset($_REQUEST['action']) ? $_REQUEST['action'] : 'edit';
switch ($action) {
    case 'add-menu-item':
        check_admin_referer('add-menu_item', 'menu-settings-column-nonce');
        if (isset($_REQUEST['nav-menu-locations'])) {
            set_theme_mod('nav_menu_locations', array_map('absint', $_REQUEST['menu-locations']));
        } elseif (isset($_REQUEST['menu-item'])) {
            nxt_save_nav_menu_items($nav_menu_selected_id, $_REQUEST['menu-item']);
        }
        break;
    case 'move-down-menu-item':
        // moving down a menu item is the same as moving up the next in order
        check_admin_referer('move-menu_item');
        $menu_item_id = isset($_REQUEST['menu-item']) ? (int) $_REQUEST['menu-item'] : 0;
        if (is_nav_menu_item($menu_item_id)) {
            $menus = isset($_REQUEST['menu']) ? array((int) $_REQUEST['menu']) : nxt_get_object_terms($menu_item_id, 'nav_menu', array('fields' => 'ids'));
            if (!is_nxt_error($menus) && !empty($menus[0])) {
                $menu_id = (int) $menus[0];
                $ordered_menu_items = nxt_get_nav_menu_items($menu_id);
                $menu_item_data = (array) nxt_setup_nav_menu_item(get_post($menu_item_id));
                // set up the data we need in one pass through the array of menu items
                $dbids_to_orders = array();
                $orders_to_dbids = array();
Example #2
0
         switch ($menu_item_data['menu-item-type']) {
             case 'post_type':
                 $_object = get_post($menu_item_data['menu-item-object-id']);
                 break;
             case 'taxonomy':
                 $_object = get_term($menu_item_data['menu-item-object-id'], $menu_item_data['menu-item-object']);
                 break;
         }
         $_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);