i have a custom menu
its ID=19
i duplicate this menu and i want to populate this new menu with the items of the first menu (id=19)
i use this code
$menu_id=19;
$menu_items = wp_get_nav_menu_items($menu_id);
$new_name "another menu";
$new_menu = wp_update_nav_menu_object( 0, array( 'menu-name' => $new_name ) );
$new_menu = wp_get_nav_menu_object($new_menu);
$new = array();
          foreach($menu_items as $menu_item) {
          
                 $new = array(
                     'menu-item-db-id' => $menu_item->db_id,
                     'menu-item-object-id' => 0,
                     'menu-item-object' => '',
                     'menu-item-parent-id' => $menu_id,
                     'menu-item-position' => $menu_item->menu_order,
                     'menu-item-type' => $menu_item->type,
                     'menu-item-title' => $menu_item->post_title,
                     'menu-item-url' => $menu_item->url,
                     'menu-item-description' => $menu_item->post_content,
                     'menu-item-attr-title' => $menu_item->post_excerpt,
                     'menu-item-target' => '',
                     'menu-item-classes' => '',
                     'menu-item-xfn' => '',
                     'menu-item-status' => 0,
                 );      
                 
              wp_update_nav_menu_item($new_menu->term_id, $menu_item_db_id = 0, $new);
          }	
the result is a menu with an invalide item
Look at the attachment.
probably there is a problem inthe mapping of array $menu to array $new
but i'm tired and i don't see the error.
Thx for your help :-)			

Kannan C answers:
								try this
$menu_id=19;
$menu_items = wp_get_nav_menu_items($menu_id);
$new_name = "another menu";
$new_menu = wp_update_nav_menu_object( 0, array( 'menu-name' => $new_name ) );
$new_menu = wp_get_nav_menu_object($new_menu);
$new = array();
          foreach($menu_items as $menu_item) {    
                 $new = array(
                     'menu-item-db-id' => 0,
                     'menu-item-object-id' => 0,
                     'menu-item-parent-id' => $menu_item->post_parent,
                     'menu-item-position' => $menu_item->menu_order,
                     'menu-item-title' => $menu_item->title,
                     'menu-item-url' => $menu_item->url,
                     'menu-item-description' => $menu_item->post_content,
                     'menu-item-attr-title' => $menu_item->post_excerpt,
                     'menu-item-target' => ''
                 );  
          wp_update_nav_menu_item($new_menu->term_id, $menu_item_db_id = 0, $new);
          }
Sébastien | French WordpressDesigner comments:
										Nice.
You have changed, 
'menu-item-db-id' => 0,
and 
'menu-item-parent-id' => $menu_item->post_parent,
Is that correct ?
Now, there is yet a valid item.
But there are two problems :
-this item is a custom (the original item is a category)
-the status of this item is not "publish"									
Kannan C comments:
										first thing i noticed is 'menu-item-title' => $menu_item->title
i am not sure about menu type, you can try using menu-item-type in the array (let me google for correct value for that. For publish simply include
'menu-item-status' => 'publish'									
Sébastien | French WordpressDesigner comments:
										'menu-item-status' => 'publish' seems to work :-))
But the is a problem :
-this item is a custom (the original item is a category)									
Sébastien | French WordpressDesigner comments:
										i have added
                     'menu-item-object' => $menu_item->object,
                     'menu-item-type' => $menu_item->type
and this problem seems resolved
but there is a big problem with the order
if i drag and drop utems, the ordre is not well saved									
Kannan C comments:
										this is working fine for me. verified the re-order.
$new = array(
                     'menu-item-db-id' => 0,
		     'menu-item-object-id' => $menu_item->object_id,
		     'menu-item-object' => $menu_item->type_label,
      		     'menu-item-type'  => $menu_item->type, 
                     'menu-item-parent-id' => $menu_item->post_parent,
                     'menu-item-position' => $menu_item->menu_order,
                     'menu-item-title' => $menu_item->title,
                     'menu-item-url' => $menu_item->url,
                     'menu-item-description' => $menu_item->post_content,
                     'menu-item-attr-title' => $menu_item->post_excerpt,
		    'menu-item-status' => 'publish',
                     'menu-item-target' => ''
                 );  
Sébastien | French WordpressDesigner comments:
										Are you sur it's ok for you ?
have you test with several items (custom, category and page) ?
'menu-item-object' => $menu_item->type_label,
seems to be wrong
i replace by  'menu-item-object' => $menu_item->object,									
Kannan C comments:
										type_label and object is both working. Go with object.
yes its saving as where it is dropped. check screenshot