WordPress.org

Make WordPress Core

Changeset 15257


Ignore:
Timestamp:
06/14/10 21:19:55 (5 years ago)
Author:
ryan
Message:

Menu ancestor fixes. Props filosofo. fixes #12812

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-includes/nav-menu-template.php

    r15235 r15257  
    249249 
    250250    $active_object = ''; 
     251    $active_ancestor_item_ids = array(); 
    251252    $active_parent_item_ids = array(); 
    252253    $active_parent_object_ids = array(); 
     
    328329        ) { 
    329330            $classes[] = 'current-menu-item'; 
     331            $_anc_id = (int) $menu_item->db_id; 
     332 
     333            while(  
     334                ( $_anc_id = get_post_meta( $_anc_id, '_menu_item_menu_item_parent', true ) ) &&  
     335                ! in_array( $_anc_id, $active_ancestor_item_ids )  
     336            ) { 
     337                $active_ancestor_item_ids[] = $_anc_id; 
     338            } 
     339 
    330340            if ( 'post_type' == $menu_item->type && 'page' == $menu_item->object ) { 
    331341                // Back compat classes for pages to match wp_page_menu() 
     
    344354            if ( $item_url == $current_url ) { 
    345355                $classes[] = 'current-menu-item'; 
     356                $_anc_id = (int) $menu_item->db_id; 
     357 
     358                while(  
     359                    ( $_anc_id = get_post_meta( $_anc_id, '_menu_item_menu_item_parent', true ) ) &&  
     360                    ! in_array( $_anc_id, $active_ancestor_item_ids )  
     361                ) { 
     362                    $active_ancestor_item_ids[] = $_anc_id; 
     363                } 
     364 
    346365                if ( untrailingslashit($current_url) == home_url() ) { 
    347366                    $classes[] = 'menu-item-home'; 
     
    361380        $menu_items[$key]->classes = array_unique( $classes ); 
    362381    } 
    363  
     382    $active_ancestor_item_ids = array_filter( array_unique( $active_ancestor_item_ids ) ); 
    364383    $active_parent_item_ids = array_filter( array_unique( $active_parent_item_ids ) ); 
    365384    $active_parent_object_ids = array_filter( array_unique( $active_parent_object_ids ) ); 
     
    389408        ) { 
    390409            $classes[] = empty( $queried_object->taxonomy ) ? 'current-' . $queried_object->post_type . '-ancestor' : 'current-' . $queried_object->taxonomy . '-ancestor'; 
     410        } 
     411 
     412        if ( in_array(  intval( $parent_item->db_id ), $active_ancestor_item_ids ) ) { 
    391413            $classes[] = 'current-menu-ancestor'; 
    392414        } 
    393  
    394415        if ( in_array( $parent_item->db_id, $active_parent_item_ids ) ) 
    395416            $classes[] = 'current-menu-parent'; 
Note: See TracChangeset for help on using the changeset viewer.