From c3c6a3721fea12400c0a9f583c51b9be773bbfc1 Mon Sep 17 00:00:00 2001 From: ryan Date: Fri, 28 Oct 2011 19:32:19 +0000 Subject: [PATCH] Fix notices and logic errors in get_page_by_path(). Props duck_. see #17670 git-svn-id: http://svn.automattic.com/wordpress/trunk@19075 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-includes/post.php | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/wp-includes/post.php b/wp-includes/post.php index bc62e8f75e..4ab61c2b7d 100644 --- a/wp-includes/post.php +++ b/wp-includes/post.php @@ -3164,22 +3164,16 @@ function get_page_by_path($page_path, $output = OBJECT, $post_type = 'page') { foreach ( (array) $pages as $page ) { if ( $page->post_name == $revparts[0] ) { $count = 0; - if ( $page->post_parent != 0 ) { - if ( null === ( $parent_page = $pages[ $page->post_parent ] ) ) - continue; - - while ( $parent_page->ID != 0 ) { - $count++; - if ( $parent_page->post_name != $revparts[ $count ] ) - break; - $parent_page = $pages[ $parent_page->post_parent ]; - } - - if ( $parent_page->ID == 0 && $count+1 == count($revparts) ) { - $foundid = $page->ID; + $p = $page; + while ( $p->post_parent != 0 && isset( $pages[ $p->post_parent ] ) ) { + $count++; + $parent = $pages[ $p->post_parent ]; + if ( ! isset( $revparts[ $count ] ) || $parent->post_name != $revparts[ $count ] ) break; - } - } else if ( count($revparts) == 1 ) { + $p = $parent; + } + + if ( $p->post_parent == 0 && $count+1 == count( $revparts ) && $p->post_name == $revparts[ $count ] ) { $foundid = $page->ID; break; }