WordPress.org

Make WordPress Core

Changeset 13284


Ignore:
Timestamp:
02/21/10 18:24:41 (6 years ago)
Author:
ryan
Message:

Use nav_menu as the taxonomy name and nav_menu_item as the post type. Set object_id in postmeta. see #11817

Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-admin/custom-navigation.php

    r13281 r13284  
    6565 
    6666    // Default Menu to show 
    67     $custom_menus = get_terms( 'menu', array( 'hide_empty' => false ) ); 
     67    $custom_menus = get_terms( 'nav_menu', array( 'hide_empty' => false ) ); 
    6868    if ( !empty( $custom_menus ) ) 
    6969        $menu_selected_id = $custom_menus[0]->term_id; 
     
    9595 
    9696        if ( $insert_menu_name != '' ) { 
    97             $existing_term = get_term_by( 'name', $insert_menu_name, 'menu' ); 
     97            $existing_term = get_term_by( 'name', $insert_menu_name, 'nav_menu' ); 
    9898            if ( $existing_term ) { 
    99                 $messagesdiv = '<div id="message" class="error fade below-h2"><p>' . $insert_menu_name . ' Menu has already created - please try another name</p></div>'; 
     99                $messagesdiv = '<div id="message" class="error fade below-h2"><p>' . $existing_term->name . ' Menu has already created - please try another name</p></div>'; 
    100100            } else { 
    101                 $term = wp_insert_term( $insert_menu_name, 'menu' ); 
     101                $term = wp_insert_term( $insert_menu_name, 'nav_menu' ); 
    102102                if ( !is_wp_error($term) ) { 
    103                     $term = get_term($term['term_id'], 'menu'); 
     103                    $term = get_term($term['term_id'], 'nav_menu'); 
    104104                    $custom_menus[$term->term_id] = $term; 
    105105                    $menu_selected_id = $term->term_id; 
     
    128128        } 
    129129    } elseif ( $postCounter > 0 && $menu_selected_id > 0 ) { 
    130         $menu_objects = get_objects_in_term( $menu_selected_id, 'menu' ); 
     130        $menu_objects = get_objects_in_term( $menu_selected_id, 'nav_menu' ); 
    131131        $menu_items = wp_custom_navigation_get_menu_items( $menu_objects ); 
    132132 
     
    134134        for ( $k = 1; $k <= $postCounter; $k++ ) { 
    135135            if (isset($_POST['dbid'.$k])) { $db_id = $_POST['dbid'.$k]; } else { $db_id = 0; } 
    136             if (isset($_POST['postmenu'.$k])) { $post_id = $_POST['postmenu'.$k]; } else { $post_id = 0; } 
     136            if (isset($_POST['postmenu'.$k])) { $object_id = $_POST['postmenu'.$k]; } else { $object_id = 0; } 
    137137            //@todo implement heirarchy 
    138138            if (isset($_POST['parent'.$k])) { $parent_id = $_POST['parent'.$k]; } else { $parent_id = 0; } 
     
    147147            if (isset($_POST['newwindow'.$k])) { $new_window = $_POST['newwindow'.$k]; } else { $new_window = 0; } 
    148148 
    149             $post = array( 'post_status' => 'publish', 'post_type' => 'menu_item', 'post_author' => $user_ID, 
    150                 'ping_status' => 0, 'post_parent' => $post_id, 'menu_order' => $position, 
    151                 'guid' => $custom_linkurl, 'post_excerpt' => $custom_anchor_title, 'tax_input' => array( 'menu' => $menu_title ), 
     149            $post = array( 'post_status' => 'publish', 'post_type' => 'nav_menu_item', 'post_author' => $user_ID, 
     150                'ping_status' => 0, 'post_parent' => 0, 'menu_order' => $position, 
     151                'guid' => $custom_linkurl, 'post_excerpt' => $custom_anchor_title, 'tax_input' => array( 'nav_menu' => $menu_title ), 
    152152                'post_content' => $custom_description, 'post_title' => $custom_title ); 
    153153            if ( $new_window ) 
     
    158158            // New menu item 
    159159            if ( $db_id == 0 ) { 
    160                 $db_id = $post_id = wp_insert_post( $post ); 
     160                $db_id = wp_insert_post( $post ); 
    161161            } elseif ( isset( $menu_items[$db_id] ) ) { 
    162162                $post['ID'] = $db_id; 
     
    165165            } 
    166166            update_post_meta($db_id, 'menu_type', $linktype); 
     167            update_post_meta($db_id, 'object_id', $object_id); 
    167168        } 
    168169        if ( !empty( $menu_items ) ) { 
     
    281282 
    282283                        //DISPLAY SELECT OPTIONS 
    283                         foreach( $custom_menus as $menu ) { 
    284                             $menu_term = get_term( $menu, 'menu' ); 
     284                        foreach ( $custom_menus as $menu ) { 
     285                            $menu_term = get_term( $menu, 'nav_menu' ); 
    285286                            if ( ( $menu_id_in_edit == $menu->term_id ) || ( $menu_selected_id == $menu->term_id ) ) 
    286287                                $selected_option = 'selected="selected"'; 
  • trunk/wp-includes/custom-navigation.php

    r13280 r13284  
    1414    $menu_items = array(); 
    1515    if ( !empty( $menu_objects ) && !empty( $key ) ) { 
    16         $args = array( 'orderby' => 'menu_order', 'post_type' => 'menu_item', 'post_status' => 'publish' ); 
     16        $args = array( 'orderby' => 'menu_order', 'post_type' => 'nav_menu_item', 'post_status' => 'publish' ); 
    1717        if ( count( $menu_objects ) > 1 ) 
    1818            $args['include'] = implode( ',', $menu_objects ); 
     
    5050        update_option('wp_settings_custom_nav_version',$nav_version); 
    5151 
    52     $custom_menus = get_terms( 'menu', array( 'hide_empty' => false ) ); 
     52    $custom_menus = get_terms( 'nav_menu', array( 'hide_empty' => false ) ); 
    5353    if ( !empty( $custom_menus ) ) { 
    5454        foreach( $custom_menus as $menu ) { 
    55             $menu_objects = get_objects_in_term( $menu->term_id, 'menu' ); 
     55            $menu_objects = get_objects_in_term( $menu->term_id, 'nav_menu' ); 
    5656            if ( !empty( $menu_objects ) ) { 
    5757                foreach( $menu_objects as $item ) 
    5858                    wp_delete_post( $item ); 
    5959            } 
    60             wp_delete_term( $menu->term_id, 'menu' ); 
     60            wp_delete_term( $menu->term_id, 'nav_menu' ); 
    6161        } 
    6262    } 
     
    102102        } 
    103103 
    104         $menu_objects = get_objects_in_term( $id, 'menu' ); 
     104        $menu_objects = get_objects_in_term( $id, 'nav_menu' ); 
    105105        $menu_items = wp_custom_navigation_get_menu_items( $menu_objects, 'menu_order' ); 
    106106        //Override for menu descriptions 
    107107        $advanced_option_descriptions = get_option('wp_settings_custom_nav_advanced_options'); 
    108         if ($advanced_option_descriptions == 'no') 
    109         { 
     108        if ( $advanced_option_descriptions == 'no' ) 
    110109            $desc = 2; 
    111         } 
    112110 
    113111        $queried_id = 0; 
    114112        global $wp_query; 
    115113        if ( is_page() ) 
    116             $queried_id = $wp_query->post->ID; 
     114            $queried_id = $wp_query->get_queried_object_id(); 
    117115        elseif ( is_category() ) 
    118             $queried_id = $wp_query->query_vars['cat']; 
    119         //DISPLAY Loop 
    120         foreach ($menu_items as $menu_item) { 
    121  
    122             //PREPARE Menu Data 
    123             //Page Menu Item 
    124             switch ( $menu_item->post_status ) { 
    125                 case 'menu-page': 
    126                     if ($menu_item->guid == '') 
    127                         $link = get_permalink( $menu_item->post_parent ); 
     116            $queried_id = $wp_query->get_queried_object_id(); 
     117        // Display Loop 
     118        foreach ( $menu_items as $menu_item ) { 
     119            $menu_type = get_post_meta($menu_item->ID, 'menu_type', true); 
     120            $object_id = get_post_meta($menu_item->ID, 'object_id', true); 
     121             
     122            switch ( $menu_type ) { 
     123                // Page Menu Item 
     124                case 'page': 
     125                    if ( $menu_item->guid == '' ) 
     126                        $link = get_permalink( $object_id ); 
    128127                    else 
    129128                        $link = $menu_item->guid; 
    130129 
    131130                    if ( $menu_item->post_title == '' ) 
    132                         $title = htmlentities( get_the_title( $menu_item->post_parent ) ); 
     131                        $title = htmlentities( get_the_title( $object_id ) ); 
    133132                    else 
    134133                        $title = htmlentities( $menu_item->post_title ); 
     
    140139                    $target = ''; 
    141140                break; 
    142             //Category Menu Item 
    143                 case 'menu-category': 
    144                     if ($menu_item->guid == '') 
    145                         $link = get_category_link( $menu_item->post_parent ); 
     141                // Category Menu Item 
     142                case 'category': 
     143                    if ( $menu_item->guid == '' ) 
     144                        $link = get_category_link( $object_id ); 
    146145                    else 
    147146                        $link = $menu_item->guid; 
    148147 
    149148                    if ( $menu_item->post_title == '' ) { 
    150                         $title_raw = get_categories( 'include='.$menu_item->post_parent ); 
     149                        $title_raw = get_categories( array('include' => $object_id) ); 
    151150                        $title =  htmlentities($title_raw[0]->cat_name); 
    152151                    } else { 
     
    155154 
    156155                    if ( $menu_item->post_content == '' ) 
    157                         $description = htmlentities( strip_tags( category_description( $menu_item->post_parent ) ) ); 
     156                        $description = htmlentities( strip_tags( category_description( $object_id ) ) ); 
    158157                    else 
    159158                        $description = htmlentities( $menu_item->post_content ); 
     
    161160                break; 
    162161                default: 
    163             //Custom Menu Item 
     162                    // Custom Menu Item 
    164163                    $link = $menu_item->guid; 
    165164                    $title =  htmlentities( $menu_item->post_title ); 
     
    193192            } 
    194193*/ 
    195             //List Items 
     194            // List Items 
    196195            ?><li id="menu-<?php echo $menu_item->ID; ?>" value="<?php echo $menu_item->ID; ?>" <?php echo $li_class; ?>><?php 
    197196                    //@todo: update front end to use post data 
    198197                    //FRONTEND Link 
    199                     if ($type == "frontend") 
    200                     { 
     198                    if ( $type == 'frontend' ) { 
    201199                        ?><a title="<?php echo $anchor_title; ?>" href="<?php echo $link; ?>" <?php echo $target; ?>><?php echo $before_title.$title.$after_title; ?><?php 
    202200 
    203                             if ( $advanced_option_descriptions == 'no' ) 
    204                             { 
     201                            if ( $advanced_option_descriptions == 'no' ) { 
    205202                                // 2 widget override do NOT display descriptions 
    206203                                // 1 widget override display descriptions 
     
    214211                                else 
    215212                                { } 
    216                             } 
    217                             else 
    218                             { 
     213                            } else { 
    219214                                // 2 widget override do NOT display descriptions 
    220215                                // 1 widget override display descriptions 
    221216                                // 0 widget override not set 
    222                                 if ($desc == 1) 
    223                                 { 
     217                                if ( $desc == 1 ) { 
    224218                                    ?><span class="nav-description"><?php echo $description; ?></span><?php 
    225219                                } 
     
    231225 
    232226                        ?></a><?php 
    233                     } 
    234                     //BACKEND draggable and droppable elements 
    235                     elseif ($type == "backend") 
    236                         $link_type = substr( $menu_item->post_status, 5 ); 
    237                     { 
     227                    } elseif ( $type == 'backend' ) { 
     228                        //BACKEND draggable and droppable elements 
     229                        $link_type = $menu_type; 
    238230                        ?> 
    239231 
  • trunk/wp-includes/post.php

    r13260 r13284  
    6464                                        ) ); 
    6565 
    66     register_post_type( 'menu_item', array( 'public' => false, 
    67                                             'show_ui' => false, 
    68                                             '_builtin' => true, 
    69                                             'capability_type' => 'post', 
    70                                             'hierarchical' => false, 
    71                                             'rewrite' => false, 
    72                                             'query_var' => false, 
    73                                         ) ); 
     66    register_post_type( 'nav_menu_item', array( 'public' => false, 
     67                                                'show_ui' => false, 
     68                                                '_builtin' => true, 
     69                                                'capability_type' => 'post', 
     70                                                'hierarchical' => false, 
     71                                                'rewrite' => false, 
     72                                                'query_var' => false, 
     73                                            ) ); 
    7474 
    7575    register_post_status( 'publish', array( 'label' => _x('Published', 'post'), 
  • trunk/wp-includes/taxonomy.php

    r13277 r13284  
    3939                                                ) ) ; 
    4040 
    41     register_taxonomy( 'menu', 'menu_item', array(  'hierarchical' => false, 
    42                                                     'query_var' => false, 
    43                                                     'rewrite' => false, 
    44                                                     'show_ui' => false, 
    45                                             ) ) ; 
     41    register_taxonomy( 'nav_menu', 'nav_menu_item', array(  'hierarchical' => false, 
     42                                                        'query_var' => false, 
     43                                                        'rewrite' => false, 
     44                                                        'show_ui' => false, 
     45                                                    ) ) ; 
    4646 
    4747    register_taxonomy( 'link_category', 'link', array(  'hierarchical' => false, 
Note: See TracChangeset for help on using the changeset viewer.