WordPress.org

Make WordPress Core

Ticket #2395: classes.php.diff

File classes.php.diff, 3.2 KB (added by chmac, 7 years ago)

Patch to add class = parent to all parents recursively AND add the new parent level class

  • classes.php

    old new  
    507507                return $output; 
    508508        } 
    509509 
     510        function parent_level($page, $current_page, $level=0) { 
     511                $_current_page = get_page($current_page); 
     512                if ( $page->ID == $current_page ) 
     513                        return $level; 
     514                elseif ( $_current_page && $page->ID == $_current_page->post_parent ) 
     515                        return ++$level; 
     516                elseif ( is_object($_current_page) ) 
     517                        return ( $this->parent_level($page, $_current_page->post_parent, ++$level ) ); 
     518                else 
     519                        return false; 
     520        } 
     521 
    510522        function start_el($output, $page, $depth, $current_page, $args) { 
    511523                if ( $depth ) 
    512524                        $indent = str_repeat("\t", $depth); 
    513525                extract($args, EXTR_SKIP); 
    514526                $css_class = 'page_item page-item-'.$page->ID; 
    515                 $_current_page = get_page( $current_page ); 
    516                 if ( $page->ID == $current_page ) 
    517                         $css_class .= ' current_page_item '; 
    518                 elseif ( $_current_page && $page->ID == $_current_page->post_parent ) 
     527                $parent_level = $this->parent_level($page, $current_page); 
     528                if ( $parent_level === 0 ) 
     529                        $css_class .= ' current_page_item'; 
     530                elseif ( $parent_level > 0 ) 
    519531                        $css_class .= ' current_page_parent'; 
     532                if ( $parent_level !== false ) 
     533                        $css_class .= ' current_page_parent_l' . $parent_level; 
    520534 
    521535                $output .= $indent . '<li class="' . $css_class . '"><a href="' . get_page_link($page->ID) . '" title="' . attribute_escape(apply_filters('the_title', $page->post_title)) . '">' . apply_filters('the_title', $page->post_title) . '</a>'; 
    522536 
     
    581595                return $output; 
    582596        } 
    583597 
     598        function parent_level($category, $current_category, $level=0) { 
     599                $_current_category = get_category( $current_category ); 
     600                if ( $category->term_id == $current_category ) 
     601                        return $level; 
     602                elseif ( $_current_category && $category->term_id == $_current_category->parent ) 
     603                        return ++$level; 
     604                elseif ( is_object($_current_category) ) 
     605                        return ( $this->parent_level($category, $_current_category->parent, ++$level )); 
     606                else 
     607                        return false; 
     608        } 
     609 
    584610        function start_el($output, $category, $depth, $args) { 
    585611                extract($args); 
    586612 
     
    629655                        $link .= ' ' . gmdate('Y-m-d', $category->last_update_timestamp); 
    630656                } 
    631657 
    632                 if ( $current_category ) 
    633                         $_current_category = get_category( $current_category ); 
    634  
    635658                if ( 'list' == $args['style'] ) { 
    636                         $output .= "\t<li"; 
    637                         $class = 'cat-item cat-item-'.$category->term_id; 
    638                         if ( $current_category && ($category->term_id == $current_category) ) 
    639                                 $class .=  ' current-cat'; 
    640                         elseif ( $_current_category && ($category->term_id == $_current_category->parent) ) 
    641                                 $class .=  ' current-cat-parent'; 
    642                         $output .=  ' class="'.$class.'"'; 
    643                         $output .= ">$link\n"; 
     659                        $css_class = 'cat-item cat-item-'.$category->term_id; 
     660                        if ( $current_category ) { 
     661                                $parent_level = $this->parent_level($category, $current_category); 
     662                                if ( $parent_level === 0 ) 
     663                                        $css_class .=  ' current-cat'; 
     664                                elseif ( $parent_level > 0 ) 
     665                                        $css_class .=  ' current-cat-parent'; 
     666                                if ( $parent_level !== false ) 
     667                                        $css_class .= ' current-cat-parent-l' . $parent_level; 
     668                        } 
     669                        $output .= "\t" . '<li class="' . $css_class . '">$link' . "\n"; 
    644670                } else { 
    645671                        $output .= "\t$link<br />\n"; 
    646672                }