WordPress.org

Make WordPress Core

Ticket #13447: auto_add_pages.diff

File auto_add_pages.diff, 3.8 KB (added by nacin, 5 years ago)
  • wp-includes/nav-menu.php

     
    748748        } 
    749749} 
    750750 
     751function _wp_auto_add_pages_to_menu( $new_status, $old_status, $post ) { 
     752        if ( 'publish' != $new_status || 'publish' == $old_status || 'page' != $post->post_type ) 
     753                return; 
     754        $auto_add = get_option( 'nav_menu_options' ); 
     755        if ( empty( $auto_add ) || ! is_array( $auto_add ) || ! isset( $auto_add['auto_add'] ) ) 
     756                return; 
     757        $auto_add = $auto_add['auto_add']; 
     758        if ( empty( $auto_add ) || ! is_array( $auto_add ) ) 
     759                return; 
     760 
     761        $args = array( 
     762                'menu-item-object-id' => $post->ID, 
     763                'menu-item-object' => $post->post_type, 
     764                'menu-item-type' => 'post_type', 
     765        ); 
     766         
     767        foreach ( $auto_add as $menu_id ) { 
     768                $items = (array) wp_get_nav_menu_items( $menu_id ); 
     769                foreach ( $items as $item ) { 
     770                        if ( $post->ID == $item->object_id ) 
     771                                continue 2; 
     772                } 
     773                wp_update_nav_menu_item( $menu_id, 0, $args ); 
     774        } 
     775} 
     776add_action( 'transition_post_status', '_wp_auto_add_pages_to_menu', 10, 3 ); 
     777 
    751778?> 
  • wp-admin/nav-menus.php

     
    356356                                        } 
    357357                                } 
    358358 
     359                                // Store 'auto-add' pages. 
     360                                $auto_add = ! empty( $_POST['auto-add-pages'] ); 
     361                                $nav_menu_option = (array) get_option( 'nav_menu_options' ); 
     362                                if ( ! isset( $nav_menu_option['auto_add'] ) ) 
     363                                        $nav_menu_option['auto_add'] = array(); 
     364                                if ( $auto_add ) { 
     365                                        if ( ! in_array( $nav_menu_selected_id, $nav_menu_option['auto_add'] ) ) 
     366                                                $nav_menu_option['auto_add'][] = $nav_menu_selected_id; 
     367                                } else { 
     368                                        if ( false !== ( $key = array_search( $nav_menu_selected_id, $nav_menu_option['auto_add'] ) ) ) 
     369                                                unset( $nav_menu_option['auto_add'][$key] ); 
     370                                } 
     371                                update_option( 'nav_menu_options', $nav_menu_option ); 
     372 
    359373                                wp_defer_term_counting(false); 
    360374 
    361375                                do_action( 'wp_update_nav_menu', $nav_menu_selected_id ); 
     
    510524                                                                        <a class="submitdelete deletion menu-delete" href="<?php echo esc_url( wp_nonce_url( admin_url('nav-menus.php?action=delete&amp;menu=' . $nav_menu_selected_id), 'delete-nav_menu-' . $nav_menu_selected_id ) ); ?>"><?php _e('Delete Menu'); ?></a> 
    511525                                                                </div><!--END .delete-action--> 
    512526                                                                <?php endif; ?> 
     527                                                                <?php if ( !empty( $nav_menu_selected_id ) ) : 
     528                                                                        if ( ! isset( $auto_add ) ) { 
     529                                                                                $auto_add = get_option( 'nav_menu_options' ); 
     530                                                                                if ( ! isset( $auto_add['auto_add'] ) ) 
     531                                                                                        $auto_add = false; 
     532                                                                                elseif ( false !== array_search( $nav_menu_selected_id, $auto_add['auto_add'] ) ) 
     533                                                                                        $auto_add = true; 
     534                                                                                else 
     535                                                                                        $auto_add = false; 
     536                                                                        }        
     537                                                                ?> 
     538                                                                <div class="auto-add-pages"> 
     539                                                                        <label class="howto"><input type="checkbox"<?php checked( $auto_add ); ?> name="auto-add-pages" value="1" /> <?php printf( __('Automatically add new top-level pages to this menu' ), esc_url( admin_url( 'edit.php?post_type=page' ) ) ); ?></label> 
     540                                                                </div> 
     541                                                                <?php endif; ?> 
    513542                                                        </div><!--END .major-publishing-actions--> 
    514543                                                </div><!--END #submitpost .submitbox--> 
    515544                                                <?php 
  • wp-admin/css/nav-menu.dev.css

     
    498498        float: right; 
    499499        padding-right: 15px; 
    500500} 
    501 .menu-name-label span { 
     501.menu-name-label span, .auto-add-pages label { 
    502502        font-size: 11px; 
    503503        font-style: normal; 
    504504} 
     505.auto-add-pages label.howto { 
     506        display: inline; 
     507} 
     508.auto-add-pages { 
     509        clear: both; 
     510} 
    505511.submitbox .submitcancel { 
    506512        color: #21759B; 
    507513        border-bottom: 1px solid #21759B;