Changeset 13739 for trunk/wp-admin/nav-menus.php
- Timestamp:
- 03/17/2010 07:57:08 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/wp-admin/nav-menus.php
r13733 r13739 68 68 69 69 // Add Menu 70 if ( isset($_POST['create-menu ']) ) {70 if ( isset($_POST['create-menu-button']) ) { 71 71 if ( current_theme_supports('nav-menus') ) { 72 72 $add_nav_menu = esc_html( $_POST['create-menu-name'] ); … … 87 87 unset($add_nav_menu); 88 88 } 89 } elseif ( isset($_POST['menu-name']) ) { 90 $old_nav_menu = get_term( $nav_menu_selected_id, 'nav_menu', ARRAY_A ); 91 $args = array( 'name' => $_POST['menu-name'], 'slug' => null, 'description' => $old_nav_menu['description'], 'parent' => $old_nav_menu['parent'], ); 92 $new_nav_menu = wp_update_term( $nav_menu_selected_id, 'nav_menu', $args ); 93 } 94 95 // Update menu items 96 $update_nav_items = isset( $_POST['li-count'] ) ? (int) $_POST['li-count'] : 0; 97 $update_nav_menu = is_nav_menu( $nav_menu_selected_id ); 98 99 if ( !is_wp_error($update_nav_menu) ) { 100 $menu_items = wp_get_nav_menu_items( $nav_menu_selected_id, array('orderby' => 'ID', 'output' => ARRAY_A, 'output_key' => 'ID') ); 101 $parent_menu_ids = array(); 102 103 // Loop through all POST variables 104 for ( $k = 0; $k < $update_nav_items; $k++ ) { 105 $menu_item_db_id = isset( $_POST['menu-item-db-id'][$k] ) ? $_POST['menu-item-db-id'][$k] : 0; 106 $menu_item_object_id = isset( $_POST['menu-item-object-id'][$k] ) ? $_POST['menu-item-object-id'][$k] : 0; 107 $menu_item_parent_id = isset( $_POST['menu-item-parent-id'][$k] ) ? $_POST['menu-item-parent-id'][$k] : 0; 108 $menu_item_position = isset( $_POST['menu-item-position'][$k] ) ? $_POST['menu-item-position'][$k] : 0; 109 $menu_item_type = isset( $_POST['menu-item-type'][$k] ) ? $_POST['menu-item-type'][$k] : 'custom'; 110 $menu_item_append = isset( $_POST['menu-item-append'][$k] ) ? $_POST['menu-item-append'][$k] : 'custom'; 111 112 $menu_item_title = isset( $_POST['menu-item-title'][$k] ) ? $_POST['menu-item-title'][$k] : ''; 113 $menu_item_url = isset( $_POST['menu-item-url'][$k] ) ? $_POST['menu-item-url'][$k] : ''; 114 $menu_item_description = isset( $_POST['menu-item-description'][$k] ) ? $_POST['menu-item-description'][$k]: ''; 115 $menu_item_attr_title = isset( $_POST['menu-item-attr-title'][$k] ) ? $_POST['menu-item-attr-title'][$k] : ''; 116 $menu_item_target = isset( $_POST['menu-item-target'][$k] ) ? $_POST['menu-item-target'][$k] : 0; 117 $menu_item_classes = isset( $_POST['menu-item-classes'][$k] ) ? $_POST['menu-item-classes'][$k] : ''; 118 $menu_item_xfn = isset( $_POST['menu-item-xfn'][$k] ) ? $_POST['menu-item-xfn'][$k] : ''; 119 120 // Menu item title can't be blank 121 if ( '' == $menu_item_title ) 122 continue; 123 124 // Populate the menu item 125 $post = array( 'post_status' => 'publish', 'post_type' => 'nav_menu_item', 'post_author' => $user_ID, 126 'ping_status' => 0, 'post_parent' => $menu_item_parent_id, 'menu_order' => $menu_item_position, 127 'post_excerpt' => $menu_item_attr_title, 'tax_input' => array( 'nav_menu' => $update_nav_menu->name ), 128 'post_content' => $menu_item_description, 'post_title' => $menu_item_title ); 129 130 // New menu item 131 if ( $menu_item_db_id == 0 ) { 132 $menu_item_db_id = wp_insert_post( $post ); 133 } elseif ( isset( $menu_items[$menu_item_db_id] ) ) { 134 $post['ID'] = $menu_item_db_id; 135 wp_update_post( $post ); 136 unset( $menu_items[$menu_item_db_id] ); 89 } else { 90 if ( isset($_POST['menu-name']) ) { 91 $old_nav_menu = get_term( $nav_menu_selected_id, 'nav_menu', ARRAY_A ); 92 $args = array( 'name' => $_POST['menu-name'], 'slug' => null, 'description' => $old_nav_menu['description'], 'parent' => $old_nav_menu['parent'], ); 93 $new_nav_menu = wp_update_term( $nav_menu_selected_id, 'nav_menu', $args ); 94 } 95 96 // Update menu items 97 $update_nav_items = isset( $_POST['li-count'] ) ? (int) $_POST['li-count'] : 0; 98 $update_nav_menu = is_nav_menu( $nav_menu_selected_id ); 99 100 if ( !is_wp_error($update_nav_menu) ) { 101 $menu_items = wp_get_nav_menu_items( $nav_menu_selected_id, array('orderby' => 'ID', 'output' => ARRAY_A, 'output_key' => 'ID') ); 102 $parent_menu_ids = array(); 103 104 // Loop through all POST variables 105 for ( $k = 0; $k < $update_nav_items; $k++ ) { 106 $menu_item_db_id = isset( $_POST['menu-item-db-id'][$k] ) ? $_POST['menu-item-db-id'][$k] : 0; 107 $menu_item_object_id = isset( $_POST['menu-item-object-id'][$k] ) ? $_POST['menu-item-object-id'][$k] : 0; 108 $menu_item_parent_id = isset( $_POST['menu-item-parent-id'][$k] ) ? $_POST['menu-item-parent-id'][$k] : 0; 109 $menu_item_position = isset( $_POST['menu-item-position'][$k] ) ? $_POST['menu-item-position'][$k] : 0; 110 $menu_item_type = isset( $_POST['menu-item-type'][$k] ) ? $_POST['menu-item-type'][$k] : 'custom'; 111 $menu_item_append = isset( $_POST['menu-item-append'][$k] ) ? $_POST['menu-item-append'][$k] : 'custom'; 112 113 $menu_item_title = isset( $_POST['menu-item-title'][$k] ) ? $_POST['menu-item-title'][$k] : ''; 114 $menu_item_url = isset( $_POST['menu-item-url'][$k] ) ? $_POST['menu-item-url'][$k] : ''; 115 $menu_item_description = isset( $_POST['menu-item-description'][$k] ) ? $_POST['menu-item-description'][$k]: ''; 116 $menu_item_attr_title = isset( $_POST['menu-item-attr-title'][$k] ) ? $_POST['menu-item-attr-title'][$k] : ''; 117 $menu_item_target = isset( $_POST['menu-item-target'][$k] ) ? $_POST['menu-item-target'][$k] : 0; 118 $menu_item_classes = isset( $_POST['menu-item-classes'][$k] ) ? $_POST['menu-item-classes'][$k] : ''; 119 $menu_item_xfn = isset( $_POST['menu-item-xfn'][$k] ) ? $_POST['menu-item-xfn'][$k] : ''; 120 121 // Menu item title can't be blank 122 if ( '' == $menu_item_title ) 123 continue; 124 125 // Populate the menu item 126 $post = array( 'post_status' => 'publish', 'post_type' => 'nav_menu_item', 'post_author' => $user_ID, 127 'ping_status' => 0, 'post_parent' => $menu_item_parent_id, 'menu_order' => $menu_item_position, 128 'post_excerpt' => $menu_item_attr_title, 'tax_input' => array( 'nav_menu' => $update_nav_menu->name ), 129 'post_content' => $menu_item_description, 'post_title' => $menu_item_title ); 130 131 // New menu item 132 if ( $menu_item_db_id == 0 ) { 133 $menu_item_db_id = wp_insert_post( $post ); 134 } elseif ( isset( $menu_items[$menu_item_db_id] ) ) { 135 $post['ID'] = $menu_item_db_id; 136 wp_update_post( $post ); 137 unset( $menu_items[$menu_item_db_id] ); 138 } 139 $parent_menu_ids[$k] = $menu_item_db_id; 140 141 // @todo sanitize type append and ID. 142 update_post_meta( $menu_item_db_id, 'menu_item_type', $menu_item_type ); 143 update_post_meta( $menu_item_db_id, 'menu_item_append', $menu_item_append ); 144 update_post_meta( $menu_item_db_id, 'menu_item_object_id', $menu_item_object_id ); 145 update_post_meta( $menu_item_db_id, 'menu_item_target', sanitize_key($menu_item_target) ); 146 // @todo handle sanitizing multiple classes separated by whitespace. 147 update_post_meta( $menu_item_db_id, 'menu_item_classes', sanitize_html_class($menu_item_classes) ); 148 update_post_meta( $menu_item_db_id, 'menu_item_xfn', sanitize_html_class($menu_item_xfn) ); 149 150 // @todo: only save custom link urls. 151 update_post_meta( $menu_item_db_id, 'menu_item_url', esc_url_raw( $menu_item_url ) ); 137 152 } 138 $parent_menu_ids[$k] = $menu_item_db_id; 139 140 // @todo sanitize type append and ID. 141 update_post_meta( $menu_item_db_id, 'menu_item_type', $menu_item_type ); 142 update_post_meta( $menu_item_db_id, 'menu_item_append', $menu_item_append ); 143 update_post_meta( $menu_item_db_id, 'menu_item_object_id', $menu_item_object_id ); 144 update_post_meta( $menu_item_db_id, 'menu_item_target', sanitize_key($menu_item_target) ); 145 // @todo handle sanitizing multiple classes separated by whitespace. 146 update_post_meta( $menu_item_db_id, 'menu_item_classes', sanitize_html_class($menu_item_classes) ); 147 update_post_meta( $menu_item_db_id, 'menu_item_xfn', sanitize_html_class($menu_item_xfn) ); 148 149 // @todo: only save custom link urls. 150 update_post_meta( $menu_item_db_id, 'menu_item_url', esc_url_raw( $menu_item_url ) ); 153 154 // Remove menu items from the menu that weren't in $_POST 155 if ( !empty( $menu_items ) ) { 156 foreach ( array_keys( $menu_items ) as $menu_item_id ) { 157 wp_delete_post( $menu_item_id ); 158 } 159 } 160 $messages_div = '<div id="message" class="updated fade below-h2"><p>' . __('The menu has been updated.') . '</p></div>'; 151 161 } 152 153 // Remove menu items from the menu that weren't in $_POST154 if ( !empty( $menu_items ) ) {155 foreach ( array_keys( $menu_items ) as $menu_item_id ) {156 wp_delete_post( $menu_item_id );157 }158 }159 $messages_div = '<div id="message" class="updated fade below-h2"><p>' . __('The menu has been updated.') . '</p></div>';160 162 } 161 163 break;
Note: See TracChangeset
for help on using the changeset viewer.