WordPress.org

Make WordPress Core

Ticket #13958: 13958.2.patch

File 13958.2.patch, 3.9 KB (added by ocean90, 7 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