diff --git a/wp-admin/admin-functions.php b/wp-admin/admin-functions.php index 32f28b1ca0..5b7ff0f7ca 100644 --- a/wp-admin/admin-functions.php +++ b/wp-admin/admin-functions.php @@ -615,10 +615,17 @@ function page_template_dropdown($default = '') { } function parent_dropdown($default = 0, $parent = 0, $level = 0) { - global $wpdb; + global $wpdb, $post_ID; $items = $wpdb->get_results("SELECT ID, post_parent, post_title FROM $wpdb->posts WHERE post_parent = $parent AND post_status = 'static' ORDER BY menu_order"); + if ($items) { foreach ($items as $item) { + // A page cannot be it's own parent. + if (!empty($post_ID)) { + if ($item->ID == $post_ID) { + continue; + } + } $pad = str_repeat(' ', $level * 3); if ($item->ID == $default) $current = ' selected="selected"'; diff --git a/wp-admin/edit-page-form.php b/wp-admin/edit-page-form.php index f3b8ed4771..a29ee7c234 100644 --- a/wp-admin/edit-page-form.php +++ b/wp-admin/edit-page-form.php @@ -34,7 +34,7 @@ window.onload = focusit;
-
+
diff --git a/wp-includes/functions.php b/wp-includes/functions.php index 341af830c3..86636785ef 100644 --- a/wp-includes/functions.php +++ b/wp-includes/functions.php @@ -1332,10 +1332,15 @@ function preg_index($number, $matches = '') { function get_page_uri($page) { global $wpdb; - $page = $wpdb->get_row("SELECT post_name, post_parent FROM $wpdb->posts WHERE ID = '$page'"); + $page = $wpdb->get_row("SELECT ID, post_name, post_parent FROM $wpdb->posts WHERE ID = '$page'"); $uri = urldecode($page->post_name); + // A page cannot be it's own parent. + if ($page->post_parent == $page->ID) { + return $uri; + } + while ($page->post_parent != 0) { $page = $wpdb->get_row("SELECT post_name, post_parent FROM $wpdb->posts WHERE ID = '$page->post_parent'"); $uri = urldecode($page->post_name) . "/" . $uri;