Ticket #13958: handle-invalid-object-types.13958.diff
File handle-invalid-object-types.13958.diff, 4.7 KB (added by , 15 years ago) |
---|
-
wp-includes/nav-menu-template.php
91 91 $output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args ); 92 92 } 93 93 94 function display_element( $menu_item, &$desc_items, $max_depth, $depth = 0, $wp_nav_menu_args = array(), &$output ) { 95 if ( empty( $menu_item ) || ! isset( $menu_item->post_status ) || 'publish' != $menu_item->post_status && empty( $wp_nav_menu_args['_display_unpublished'] ) ) 96 return; 97 98 return parent::display_element( $menu_item, $desc_items, $max_depth, $depth, $wp_nav_menu_args, $output ); 99 } 100 94 101 /** 95 102 * @see Walker::end_el() 96 103 * @since 3.0.0 -
wp-includes/nav-menu.php
305 305 $original_title = ''; 306 306 if ( 'taxonomy' == $args['menu-item-type'] ) { 307 307 $original_parent = get_term_field( 'parent', $args['menu-item-object-id'], $args['menu-item-object'], 'raw' ); 308 if ( is_wp_error( $original_parent ) ) 309 return $original_parent; 310 308 311 $original_title = get_term_field( 'name', $args['menu-item-object-id'], $args['menu-item-object'], 'raw' ); 312 if ( is_wp_error( $original_title ) ) 313 return $original_title; 314 309 315 } elseif ( 'post_type' == $args['menu-item-type'] ) { 310 316 311 317 $original_object = get_post( $args['menu-item-object-id'] ); 318 if ( empty( $original_object->post_type ) || ! post_type_exists( $original_object->post_type ) ) 319 return new WP_Error('invalid_post_type', __( 'Invalid post type.' ) ); 312 320 $original_parent = (int) $original_object->post_parent; 313 321 $original_title = $original_object->post_title; 314 322 } … … 543 551 544 552 if ( 'post_type' == $menu_item->type ) { 545 553 $object = get_post_type_object( $menu_item->object ); 546 $menu_item->type_label = $object->labels->singular_name;554 $menu_item->type_label = empty( $object ) ? '' : $object->labels->singular_name; 547 555 $menu_item->url = get_permalink( $menu_item->object_id ); 548 556 549 557 $original_object = get_post( $menu_item->object_id ); 550 558 $original_title = $original_object->post_title; 551 559 $menu_item->title = '' == $menu_item->post_title ? $original_title : $menu_item->post_title; 560 561 if ( ! post_type_exists( $menu_item->object ) ) { 562 $menu_item->title = __( 'Invalid post type.' ); 563 $menu_item->url = ''; 564 $menu_item->post_status = 'draft'; 565 } 552 566 567 553 568 } elseif ( 'taxonomy' == $menu_item->type ) { 554 569 $object = get_taxonomy( $menu_item->object ); 555 $menu_item->type_label = $object->labels->singular_name;570 $menu_item->type_label = empty( $object ) ? '' : $object->labels->singular_name; 556 571 $term_url = get_term_link( (int) $menu_item->object_id, $menu_item->object ); 557 $menu_item->url = ! is_wp_error( $term_url ) ? $term_url : '';572 $menu_item->url = ! is_wp_error( $term_url ) ? $term_url : ''; 558 573 559 574 $original_title = get_term_field( 'name', $menu_item->object_id, $menu_item->object, 'raw' ); 560 575 $menu_item->title = '' == $menu_item->post_title ? $original_title : $menu_item->post_title; 576 if ( is_wp_error( $original_title ) ) { 577 $menu_item->title = $original_title->get_error_message(); 578 $menu_item->url = ''; 579 $menu_item->post_status = 'draft'; 580 } 561 581 562 582 } else { 563 583 $menu_item->type_label = __('Custom'); -
wp-admin/includes/nav-menu.php
8 8 * @uses Walker_Nav_Menu 9 9 */ 10 10 class Walker_Nav_Menu_Edit extends Walker_Nav_Menu { 11 11 12 /** 13 * Generate the markup for an individual menu item to edit. 14 * 15 * @see Walker_Nav_Menu::display_element() 16 * @since 3.1 17 */ 18 function display_element( $menu_item, &$desc_items, $max_depth, $depth = 0, $wp_nav_menu_args = array(), &$output ) { 19 $wp_nav_menu_args['_display_unpublished'] = true; 20 21 return parent::display_element( $menu_item, $desc_items, $max_depth, $depth, $wp_nav_menu_args, $output ); 22 } 23 24 /** 12 25 * @see Walker_Nav_Menu::start_lvl() 13 26 * @since 3.0.0 14 27 * … … 57 70 $original_title = ''; 58 71 if ( 'taxonomy' == $item->type ) { 59 72 $original_title = get_term_field( 'name', $item->object_id, $item->object, 'raw' ); 73 if ( is_wp_error( $original_title ) ) 74 $original_title = $original_title->get_error_message(); 60 75 } elseif ( 'post_type' == $item->type ) { 61 76 $original_object = get_post( $item->object_id ); 62 77 $original_title = $original_object->post_title;