WordPress.org

Make WordPress Core

Ticket #13213: non-js-add-home-link.13213.2.diff

File non-js-add-home-link.13213.2.diff, 8.0 KB (added by filosofo, 4 years ago)
  • wp-includes/nav-menu-template.php

     
    157157 
    158158                $output .= $indent . '<li>'; 
    159159                $output .= '<label class="menu-item-title">'; 
    160                 $output .= '<input type="checkbox" class="menu-item-checkbox" name="menu-item[' . $possible_object_id . '][menu-item-object-id]" value="'. esc_attr( $item->object_id ) .'" /> '; 
     160                $output .= '<input type="checkbox" class="menu-item-checkbox'; 
     161                if ( ! empty( $item->_add_to_top ) ) { 
     162                        $output .= ' add-to-top'; 
     163                } 
     164                $output .= '" name="menu-item[' . $possible_object_id . '][menu-item-object-id]" value="'. esc_attr( $item->object_id ) .'" /> '; 
    161165                $output .= esc_html( $item->title ) .'</label>'; 
    162166 
    163167                // Menu item hidden fields 
  • wp-includes/nav-menu.php

     
    545545        if ( isset( $menu_item->post_type ) ) { 
    546546                if ( 'nav_menu_item' == $menu_item->post_type ) { 
    547547                        $menu_item->db_id = (int) $menu_item->ID; 
    548                         $menu_item->menu_item_parent = get_post_meta( $menu_item->ID, '_menu_item_menu_item_parent', true ); 
    549                         $menu_item->object_id = get_post_meta( $menu_item->ID, '_menu_item_object_id', true ); 
    550                         $menu_item->object = get_post_meta( $menu_item->ID, '_menu_item_object', true ); 
    551                         $menu_item->type = get_post_meta( $menu_item->ID, '_menu_item_type', true ); 
     548                        $menu_item->menu_item_parent = empty( $menu_item->menu_item_parent ) ? get_post_meta( $menu_item->ID, '_menu_item_menu_item_parent', true ) : $menu_item->menu_item_parent; 
     549                        $menu_item->object_id = empty( $menu_item->object_id ) ? get_post_meta( $menu_item->ID, '_menu_item_object_id', true ) : $menu_item->object_id; 
     550                        $menu_item->object = empty( $menu_item->object ) ? get_post_meta( $menu_item->ID, '_menu_item_object', true ) : $menu_item->object; 
     551                        $menu_item->type = empty( $menu_item->type ) ? get_post_meta( $menu_item->ID, '_menu_item_type', true ) : $menu_item->type; 
    552552 
    553553                        if ( 'post_type' == $menu_item->type ) { 
    554554                                $object = get_post_type_object( $menu_item->object ); 
     
    574574                                $menu_item->url = get_post_meta( $menu_item->ID, '_menu_item_url', true ); 
    575575                        } 
    576576 
    577                         $menu_item->target = get_post_meta( $menu_item->ID, '_menu_item_target', true ); 
     577                        $menu_item->target = empty( $menu_item->target ) ? get_post_meta( $menu_item->ID, '_menu_item_target', true ) : $menu_item->target; 
    578578 
    579                         $menu_item->attr_title = apply_filters( 'nav_menu_attr_title', $menu_item->post_excerpt ); 
    580                         $menu_item->description = apply_filters( 'nav_menu_description', $menu_item->post_content ); 
     579                        $menu_item->attr_title = empty( $menu_item->attr_title ) ? apply_filters( 'nav_menu_attr_title', $menu_item->post_excerpt ) : $menu_item->attr_title; 
     580                        $menu_item->description = empty( $menu_item->description ) ? apply_filters( 'nav_menu_description', $menu_item->post_content ) : $menu_item->description; 
    581581 
    582                         $menu_item->classes = (array) get_post_meta( $menu_item->ID, '_menu_item_classes', true ); 
    583                         $menu_item->xfn = get_post_meta( $menu_item->ID, '_menu_item_xfn', true ); 
     582                        $menu_item->classes = empty( $menu_item->classes ) ? (array) get_post_meta( $menu_item->ID, '_menu_item_classes', true ) : $menu_item->classes; 
     583                        $menu_item->xfn = empty( $menu_item->xfn ) ? get_post_meta( $menu_item->ID, '_menu_item_xfn', true ) : $menu_item->xfn; 
    584584                } else { 
    585585                        $menu_item->db_id = 0; 
    586586                        $menu_item->menu_item_parent = 0; 
  • wp-admin/includes/nav-menu.php

     
    473473                        </p> 
    474474 
    475475                <p class="button-controls"> 
    476                         <span class="list-controls"> 
    477                                 <a href="#" class="select-all add-home-link"><?php _e('Add Home Link'); ?></a> 
    478                         </span> 
    479476                        <span class="add-to-menu"> 
    480477                                <img class="waiting" src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" alt="" /> 
    481478                                <input type="submit" class="button-secondary submit-add-to-menu" value="<?php esc_attr_e('Add to Menu'); ?>" name="add-custom-menu-item" id="submit-customlinkdiv" /> 
     
    495492 * @param string $post_type The post type object. 
    496493 */ 
    497494function wp_nav_menu_item_post_type_meta_box( $object, $post_type ) { 
     495        global $_nav_menu_placeholder; 
     496 
    498497        $post_type_name = $post_type['args']->name; 
    499498 
    500499        // paginate browsing for large numbers of post objects 
     
    632631                        <ul id="<?php echo $post_type_name; ?>checklist" class="list:<?php echo $post_type_name?> categorychecklist form-no-clear"> 
    633632                                <?php 
    634633                                $args['walker'] = $walker; 
     634                                 
     635                                // if we're dealing with pages, let's put a checkbox for the front page at the top of the list 
     636                                if ( 'page' == $post_type_name ) { 
     637                                        $front_page = (int) get_option( 'page_on_front' ); 
     638                                        if ( ! empty( $front_page ) ) { 
     639                                                $front_page_obj = get_post( $front_page ); 
     640                                                $front_page_obj->_add_to_top = true; 
     641                                                array_unshift( $posts, $front_page_obj ); 
     642                                        } else { 
     643                                                $_nav_menu_placeholder = ( 0 > $_nav_menu_placeholder ) ? intval($_nav_menu_placeholder) - 1 : -1; 
     644                                                array_unshift( $posts, (object) array( 
     645                                                        '_add_to_top' => true, 
     646                                                        'ID' => 0, 
     647                                                        'object_id' => $_nav_menu_placeholder, 
     648                                                        'post_title' => _x('Home', 'nav menu home label'), 
     649                                                        'post_type' => 'nav_menu_item', 
     650                                                        'post_content' => '', 
     651                                                        'post_excerpt' => '', 
     652                                                ) ); 
     653                                        } 
     654                                } 
     655 
    635656                                $checkbox_items = walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', $posts), 0, (object) $args ); 
    636657 
    637658                                if ( 'all' == $current_tab && ! empty( $_REQUEST['selectall'] ) ) { 
    638659                                        $checkbox_items = preg_replace('/(type=(.)checkbox(\2))/', '$1 checked=$2checked$2', $checkbox_items); 
    639660 
    640661                                } 
     662 
    641663                                echo $checkbox_items; 
    642664                                ?> 
    643665                        </ul> 
  • wp-admin/js/nav-menu.dev.js

     
    3838 
    3939                        this.attachTabsPanelListeners(); 
    4040 
    41                         this.attachHomeLinkListener(); 
    42  
    4341                        this.attachUnsavedChangesListener(); 
    4442 
    4543                        if( api.menuList.length ) // If no menu, we're in the + tab. 
     
    134132                                                        var t = $(this), 
    135133                                                                listItemDBIDMatch = re.exec( t.attr('name') ), 
    136134                                                                listItemDBID = 'undefined' == typeof listItemDBIDMatch[1] ? 0 : parseInt(listItemDBIDMatch[1], 10); 
     135                                                        if ( this.className && -1 != this.className.indexOf('add-to-top') ) 
     136                                                                processMethod = api.addMenuItemToTop;  
    137137                                                        menuItems[listItemDBID] = t.closest('li').getItemData( 'add-menu-item', listItemDBID ); 
    138138                                                }); 
     139                                                 
    139140                                                // Add the items 
    140141                                                api.addItemToMenu(menuItems, processMethod, function(){ 
    141142                                                        // Deselect the items and hide the ajax spinner 
     
    540541                        $(menuMarkup).hideAdvancedMenuItemFields().prependTo( api.targetList ); 
    541542                }, 
    542543 
    543                 attachHomeLinkListener : function() { 
    544                         $('.add-home-link', '.customlinkdiv').click(function(e) { 
    545                                 api.addLinkToMenu( navMenuL10n.homeurl, navMenuL10n.home, api.addMenuItemToTop ); 
    546                                 return false; 
    547                         }); 
    548                 }, 
    549  
    550544                attachUnsavedChangesListener : function() { 
    551545                        $('#menu-management input, #menu-management select, #menu-management, #menu-management textarea').change(function(){ 
    552546                                api.registerChange(); 
  • wp-admin/nav-menus.php

     
    318318                        // Update menu items 
    319319 
    320320                        if ( ! is_wp_error( $_menu_object ) ) { 
    321                                 $unsorted_menu_items = wp_get_nav_menu_items( $nav_menu_selected_id, array('orderby' => 'ID', 'output' => ARRAY_A, 'output_key' => 'ID') ); 
     321                                $unsorted_menu_items = wp_get_nav_menu_items( $nav_menu_selected_id, array('orderby' => 'ID', 'output' => ARRAY_A, 'output_key' => 'ID', 'post_status' => 'draft,publish') ); 
    322322                                $menu_items = array(); 
    323323                                // Index menu items by db ID 
    324324                                foreach( $unsorted_menu_items as $_item )