WordPress.org

Make WordPress Core

Ticket #5662: 5662.diff

File 5662.diff, 1.9 KB (added by AaronCampbell, 7 years ago)
  • wp-includes/post.php

     
    176176 
    177177        $_post = sanitize_post($_post, $filter); 
    178178 
     179        get_post_ancestors($_post); 
     180 
    179181        if ( $output == OBJECT ) { 
    180182                return $_post; 
    181183        } elseif ( $output == ARRAY_A ) { 
     
    187189        } 
    188190} 
    189191 
     192function get_post_ancestors (&$_post) { 
     193    global $wpdb; 
     194        $_post->ancestors = array(); 
     195 
     196        if ($_post->post_parent != 0) { 
     197            $id = $_post->ancestors[] = $_post->post_parent; 
     198            while ($ancestor = $wpdb->get_var("SELECT `post_parent` FROM $wpdb->posts WHERE ID= '{$id}' LIMIT 1")) { 
     199                $id = $_post->ancestors[] = $ancestor; 
     200            } 
     201        } 
     202} 
     203 
    190204/** 
    191205 * get_post_field() - Retrieve a field based on a post ID. 
    192206 * 
     
    17241738 
    17251739        $pages = apply_filters('get_pages', $pages, $r); 
    17261740 
     1741        $ancestors = array(); 
     1742        foreach ($pages as $page) { 
     1743            if ($page->post_parent != 0) { 
     1744                $ancestors[$page->ID] = $page->post_parent; 
     1745            } 
     1746        } 
     1747        if (!empty($ancestors)) { 
     1748        foreach ($pages as $page) { 
     1749            $page->ancestors = array(); 
     1750            $id = $page->ID; 
     1751            while (isset($ancestors[$id])) { 
     1752                    $id = $page->ancestors[] = $ancestors[$id]; 
     1753            } 
     1754        } 
     1755        } 
    17271756        return $pages; 
    17281757} 
    17291758 
  • wp-includes/classes.php

     
    547547                        $indent = str_repeat("\t", $depth); 
    548548                else 
    549549                        $indent = ''; 
    550                          
     550 
    551551                extract($args, EXTR_SKIP); 
    552552                $css_class = 'page_item page-item-'.$page->ID; 
    553553                $_current_page = get_page( $current_page ); 
     554                if (in_array($page->ID, $_current_page->ancestors)) { 
     555                        $css_class .= ' current_page_ancestor '; 
     556                } 
    554557                if ( $page->ID == $current_page ) 
    555558                        $css_class .= ' current_page_item '; 
    556559                elseif ( $_current_page && $page->ID == $_current_page->post_parent )