wp_save_nav_menu_items( int $menu_id, array[] $menu_data = array() ): int[]

In this article

Save posted nav menu item data.

Parameters

$menu_idintrequired
The menu ID for which to save this item. Value of 0 makes a draft, orphaned menu item. Default 0.
$menu_dataarray[]optional
The unsanitized POSTed menu item data.

Default:array()

Return

int[] The database IDs of the items saved

Source

function wp_save_nav_menu_items( $menu_id = 0, $menu_data = array() ) {	$menu_id = (int) $menu_id;	$items_saved = array();	if ( 0 === $menu_id || is_nav_menu( $menu_id ) ) {	// Loop through all the menu items' POST values.	foreach ( (array) $menu_data as $_possible_db_id => $_item_object_data ) {	if (	// Checkbox is not checked.	empty( $_item_object_data['menu-item-object-id'] ) &&	(	// And item type either isn't set.	! isset( $_item_object_data['menu-item-type'] ) ||	// Or URL is the default.	in_array( $_item_object_data['menu-item-url'], array( 'https://', 'http://', '' ), true ) ||	// Or it's not a custom menu item (but not the custom home page).	! ( 'custom' === $_item_object_data['menu-item-type'] && ! isset( $_item_object_data['menu-item-db-id'] ) ) ||	// Or it *is* a custom menu item that already exists.	! empty( $_item_object_data['menu-item-db-id'] )	)	) {	// Then this potential menu item is not getting added to this menu.	continue;	}	// If this possible menu item doesn't actually have a menu database ID yet.	if (	empty( $_item_object_data['menu-item-db-id'] ) ||	( 0 > $_possible_db_id ) ||	$_possible_db_id !== (int) $_item_object_data['menu-item-db-id']	) {	$_actual_db_id = 0;	} else {	$_actual_db_id = (int) $_item_object_data['menu-item-db-id'];	}	$args = array(	'menu-item-db-id' => ( isset( $_item_object_data['menu-item-db-id'] ) ? $_item_object_data['menu-item-db-id'] : '' ),	'menu-item-object-id' => ( isset( $_item_object_data['menu-item-object-id'] ) ? $_item_object_data['menu-item-object-id'] : '' ),	'menu-item-object' => ( isset( $_item_object_data['menu-item-object'] ) ? $_item_object_data['menu-item-object'] : '' ),	'menu-item-parent-id' => ( isset( $_item_object_data['menu-item-parent-id'] ) ? $_item_object_data['menu-item-parent-id'] : '' ),	'menu-item-position' => ( isset( $_item_object_data['menu-item-position'] ) ? $_item_object_data['menu-item-position'] : '' ),	'menu-item-type' => ( isset( $_item_object_data['menu-item-type'] ) ? $_item_object_data['menu-item-type'] : '' ),	'menu-item-title' => ( isset( $_item_object_data['menu-item-title'] ) ? $_item_object_data['menu-item-title'] : '' ),	'menu-item-url' => ( isset( $_item_object_data['menu-item-url'] ) ? $_item_object_data['menu-item-url'] : '' ),	'menu-item-description' => ( isset( $_item_object_data['menu-item-description'] ) ? $_item_object_data['menu-item-description'] : '' ),	'menu-item-attr-title' => ( isset( $_item_object_data['menu-item-attr-title'] ) ? $_item_object_data['menu-item-attr-title'] : '' ),	'menu-item-target' => ( isset( $_item_object_data['menu-item-target'] ) ? $_item_object_data['menu-item-target'] : '' ),	'menu-item-classes' => ( isset( $_item_object_data['menu-item-classes'] ) ? $_item_object_data['menu-item-classes'] : '' ),	'menu-item-xfn' => ( isset( $_item_object_data['menu-item-xfn'] ) ? $_item_object_data['menu-item-xfn'] : '' ),	);	$items_saved[] = wp_update_nav_menu_item( $menu_id, $_actual_db_id, $args );	}	}	return $items_saved; } 

Changelog

VersionDescription
3.0.0Introduced.

User Contributed Notes

You must log in before being able to contribute a note or feedback.