WordPress.org

Make WordPress Core

Ticket #5662: 5662.2.diff

File 5662.2.diff, 2.0 KB (added by jeremyclarke, 10 years ago)

fixed to not throw errors on non-page screens

  • 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 ($_current_page && 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 )