Fix notices and logic errors in get_page_by_path(). Props duck_. see #17670

git-svn-id: https://develop.svn.wordpress.org/trunk@19075 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Ryan Boren 2011-10-28 19:32:19 +00:00
parent 722c6d7003
commit a3f2a7ce55

View File

@ -3164,22 +3164,16 @@ function get_page_by_path($page_path, $output = OBJECT, $post_type = 'page') {
foreach ( (array) $pages as $page ) { foreach ( (array) $pages as $page ) {
if ( $page->post_name == $revparts[0] ) { if ( $page->post_name == $revparts[0] ) {
$count = 0; $count = 0;
if ( $page->post_parent != 0 ) { $p = $page;
if ( null === ( $parent_page = $pages[ $page->post_parent ] ) ) while ( $p->post_parent != 0 && isset( $pages[ $p->post_parent ] ) ) {
continue; $count++;
$parent = $pages[ $p->post_parent ];
while ( $parent_page->ID != 0 ) { if ( ! isset( $revparts[ $count ] ) || $parent->post_name != $revparts[ $count ] )
$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;
break; break;
} $p = $parent;
} else if ( count($revparts) == 1 ) { }
if ( $p->post_parent == 0 && $count+1 == count( $revparts ) && $p->post_name == $revparts[ $count ] ) {
$foundid = $page->ID; $foundid = $page->ID;
break; break;
} }