wp_save_nav_menu_items() – Save posted nav menu item data.

You appear to be a bot. Output may be restricted

Description

Save posted nav menu item data.

Usage

$int[] = wp_save_nav_menu_items( $menu_id, $menu_data );

Parameters

$menu_id
( int ) optional – The menu ID for which to save this item. Value of 0 makes a draft, orphaned menu item. Default 0.
$menu_data
( array[] ) optional – The unsanitized POSTed menu item data.

Returns

int[] The database IDs of the items saved

Source

File name: wordpress/wp-admin/includes/nav-menu.php
Lines:

1 to 59 of 59
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 != $_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;
}
 

 View on GitHub View on Trac