Ticket #12812: current-menu-ancestor-actual.12812.diff
File current-menu-ancestor-actual.12812.diff, 2.4 KB (added by , 15 years ago) |
---|
-
wp-includes/nav-menu-template.php
248 248 $queried_object_id = (int) $wp_query->queried_object_id; 249 249 250 250 $active_object = ''; 251 $active_ancestor_item_ids = array(); 251 252 $active_parent_item_ids = array(); 252 253 $active_parent_object_ids = array(); 253 254 $possible_taxonomy_ancestors = array(); … … 327 328 ) 328 329 ) { 329 330 $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 330 340 if ( 'post_type' == $menu_item->type && 'page' == $menu_item->object ) { 331 341 // Back compat classes for pages to match wp_page_menu() 332 342 $classes[] = 'page_item'; … … 343 353 $item_url = strpos( $menu_item->url, '#' ) ? substr( $menu_item->url, 0, strpos( $menu_item->url, '#' ) ) : $menu_item->url; 344 354 if ( $item_url == $current_url ) { 345 355 $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 346 365 if ( untrailingslashit($current_url) == home_url() ) { 347 366 $classes[] = 'menu-item-home'; 348 367 // Back compat for home limk to match wp_page_menu() … … 360 379 361 380 $menu_items[$key]->classes = array_unique( $classes ); 362 381 } 363 382 $active_ancestor_item_ids = array_filter( array_unique( $active_ancestor_item_ids ) ); 364 383 $active_parent_item_ids = array_filter( array_unique( $active_parent_item_ids ) ); 365 384 $active_parent_object_ids = array_filter( array_unique( $active_parent_object_ids ) ); 366 385 … … 388 407 ) 389 408 ) { 390 409 $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 ) ) { 391 413 $classes[] = 'current-menu-ancestor'; 392 414 } 393 394 415 if ( in_array( $parent_item->db_id, $active_parent_item_ids ) ) 395 416 $classes[] = 'current-menu-parent'; 396 417 if ( in_array( $parent_item->object_id, $active_parent_object_ids ) )