WordPress.org

Make WordPress Core

Ticket #12864: nav_menu_bugfixes.diff

File nav_menu_bugfixes.diff, 3.3 KB (added by ptahdunbar, 11 years ago)
  • wp-includes/nav-menu.php

     
    202202                        if ( 'post_type' == $menu_item->type ) {
    203203                                $object = get_post_type_object( $menu_item->object );
    204204                                $menu_item->append = $object->singular_label;
    205 
     205                                $menu_item->url = get_permalink( $menu_item->object_id );
     206                               
    206207                        } elseif ( 'taxonomy' == $menu_item->type ) {
    207208                                $object = get_taxonomy( $menu_item->object );
    208209                                $menu_item->append = $object->singular_label;
     210                                $menu_item->url = get_term_link( (int) $menu_item->object_id, $menu_item->object );
    209211
    210212                        } else {
    211213                                $menu_item->append = __('Custom');
     214                                $menu_item->url = get_post_meta( $menu_item->ID, '_menu_item_url', true );
    212215                        }
    213216
    214217                        $menu_item->title = $menu_item->post_title;
    215                         $menu_item->url = get_post_meta( $menu_item->ID, '_menu_item_url', true );
    216218                        $menu_item->target = get_post_meta( $menu_item->ID, '_menu_item_target', true );
    217219
    218                         $menu_item->attr_title = strip_tags( $menu_item->post_excerpt );
    219                         $menu_item->description = strip_tags( $menu_item->post_content );
     220                        $menu_item->attr_title = strip_tags( esc_attr($menu_item->post_excerpt) );
     221                        $menu_item->description = strip_tags( esc_attr($menu_item->post_content) );
    220222
    221223                        $menu_item->classes = get_post_meta( $menu_item->ID, '_menu_item_classes', true );
    222224                        $menu_item->xfn = get_post_meta( $menu_item->ID, '_menu_item_xfn', true );
     
    229231                        $menu_item->type = 'custom';
    230232                        $menu_item->append = __('custom');
    231233
    232                         $menu_item->attr_title = strip_tags( $menu_item->post_excerpt );
    233                         $menu_item->description = strip_tags( $menu_item->post_content );
     234                        $menu_item->attr_title = strip_tags( esc_attr($menu_item->post_excerpt) );
     235                        $menu_item->description = strip_tags( esc_attr($menu_item->post_content) );
    234236
    235237                        $menu_item->title = $menu_item->post_title;
    236238                        $menu_item->url = get_post_meta( $menu_item->ID, '_menu_item_url', true );
     
    253255                        $menu_item->target = '';
    254256
    255257                        $menu_item->attr_title = '';
    256                         $menu_item->description = strip_tags( $menu_item->post_content );
     258                        $menu_item->description = '';
    257259                        $menu_item->classes = '';
    258260                        $menu_item->xfn = '';
    259261                        break;
     
    273275                        $menu_item->url = get_term_link( $menu_item, $menu_item_object );
    274276                        $menu_item->target = '';
    275277                        $menu_item->attr_title = '';
    276                         $menu_item->description = strip_tags( $menu_item->description );
     278                        $menu_item->description = '';
    277279                        $menu_item->classes = '';
    278280                        $menu_item->xfn = '';
    279281                        break;
  • wp-admin/nav-menus.php

     
    160160                                        update_post_meta( $menu_item_db_id, '_menu_item_classes', sanitize_html_class($menu_item_classes) );
    161161                                        update_post_meta( $menu_item_db_id, '_menu_item_xfn', sanitize_html_class($menu_item_xfn) );
    162162
    163                                         // @todo: only save custom link urls.
    164                                         update_post_meta( $menu_item_db_id, '_menu_item_url', esc_url_raw($menu_item_url) );
     163                                        if ( 'custom' == $menu_item_type )
     164                                                update_post_meta( $menu_item_db_id, '_menu_item_url', esc_url_raw($menu_item_url) );
    165165                                }
    166166
    167167                                // Remove menu items from the menu that weren't in $_POST