WordPress.org

Make WordPress Core

Ticket #13958: 13958.2.patch

File 13958.2.patch, 3.9 KB (added by ocean90, 4 years ago)
  • wp-admin/css/nav-menu.dev.css

     
    387387        -khtml-border-radius: 3px; 
    388388} 
    389389 
     390#menu-to-edit .menu-item-invalid .menu-item-handle {  
     391        background-color: #f6c9cc; /* Fallback */  
     392        background-image: -ms-linear-gradient(bottom, #f6c9cc, #fdf8ff); /* IE10 */   
     393        background-image: -moz-linear-gradient(bottom, #f6c9cc, #fdf8ff); /* Firefox */   
     394        background-image: -o-linear-gradient(bottom, #f6c9cc, #fdf8ff); /* Opera */   
     395        background-image: -webkit-gradient(linear, left bottom, left top, from(#f6c9cc), to(#fdf8ff)); /* old Webkit  */   
     396        background-image: -webkit-linear-gradient(bottom, #f6c9cc, #fdf8ff); /* new Webkit */   
     397        background-image: linear-gradient(bottom, #f6c9cc, #fdf8ff); /* proposed W3C Markup */ 
     398} 
     399 
    390400.menu-item-edit-active .menu-item-handle { 
    391401        -moz-border-radius: 3px 3px 0 0; 
    392402        -webkit-border-bottom-right-radius: 0; 
  • wp-admin/includes/nav-menu.php

     
    6565                        'menu-item-edit-' . ( ( isset( $_GET['edit-menu-item'] ) && $item_id == $_GET['edit-menu-item'] ) ? 'active' : 'inactive'), 
    6666                ); 
    6767 
     68                if ( isset( $item->_invalid ) )  
     69                        $classes[] = 'menu-item-invalid'; 
     70 
    6871                $title = $item->title; 
    6972 
    7073                if ( isset( $item->post_status ) && 'draft' == $item->post_status ) { 
  • wp-includes/nav-menu.php

     
    443443} 
    444444 
    445445/** 
     446 * Returns if a menu item is valid. Bug #13958 
     447 * 
     448 * @since 3.2.0 
     449 * 
     450 * @param object $menu_item The menu item to check 
     451 * @return bool false if invalid, else true. 
     452 */ 
     453function _is_valid_nav_menu_item( $item ) { 
     454        if( ! empty( $item->_invalid ) &&  $item->_invalid == true ) 
     455                return false; 
     456 
     457        return true; 
     458} 
     459 
     460/** 
    446461 * Returns all menu items of a navigation menu. 
    447462 * 
    448463 * @since 3.0.0 
     
    512527        } 
    513528 
    514529        $items = array_map( 'wp_setup_nav_menu_item', $items ); 
     530         
     531        if ( ! in_array( $args['post_status'], array( 'draft', 'any' ) ) )  
     532                $items = array_filter( $items, '_is_valid_nav_menu_item' ); 
    515533 
    516534        if ( ARRAY_A == $args['output'] ) { 
    517535                $GLOBALS['_menu_item_sort_prop'] = $args['output_key']; 
     
    559577                        $menu_item->type = empty( $menu_item->type ) ? get_post_meta( $menu_item->ID, '_menu_item_type', true ) : $menu_item->type; 
    560578 
    561579                        if ( 'post_type' == $menu_item->type ) { 
    562                                 $object = get_post_type_object( $menu_item->object ); 
    563                                 $menu_item->type_label = $object->labels->singular_name; 
     580                                if ( post_type_exists( $menu_item->object ) ) { 
     581                                        $menu_item->type_label = get_post_type_object( $menu_item->object )->labels->singular_name; 
     582                                } else { 
     583                                        $menu_item->type_label = $menu_item->object; 
     584                                        $menu_item->post_status = 'draft'; 
     585                                        $menu_item->_invalid = true; 
     586                                } 
     587 
    564588                                $menu_item->url = get_permalink( $menu_item->object_id ); 
    565589 
    566590                                $original_object = get_post( $menu_item->object_id ); 
     
    568592                                $menu_item->title = '' == $menu_item->post_title ? $original_title : $menu_item->post_title; 
    569593 
    570594                        } elseif ( 'taxonomy' == $menu_item->type ) { 
    571                                 $object = get_taxonomy( $menu_item->object ); 
    572                                 $menu_item->type_label = $object->labels->singular_name; 
     595                                if ( taxonomy_exists( $menu_item->object ) ) { 
     596                                        $menu_item->type_label = get_taxonomy( $menu_item->object )->labels->singular_name; 
     597                                } else { 
     598                                        $menu_item->type_label = $menu_item->object; 
     599                                        $menu_item->post_status = 'draft'; 
     600                                        $menu_item->_invalid = true; 
     601                                } 
     602 
    573603                                $term_url = get_term_link( (int) $menu_item->object_id, $menu_item->object ); 
    574604                                $menu_item->url = !is_wp_error( $term_url ) ? $term_url : ''; 
    575605