WordPress.org

Make WordPress Core

Ticket #11424: 11424.diff

File 11424.diff, 1.0 KB (added by mdawaffe, 4 years ago)
Line 
1Index: wp-includes/post.php
2===================================================================
3--- wp-includes/post.php        (revision 12393)
4+++ wp-includes/post.php        (working copy)
5@@ -%ld,%ld +%ld,%ld @@
6                $post_parent = 0;
7 
8        if ( !empty($post_ID) ) {
9-               if ( $post_parent == $post_ID ) {
10-                       // Post can't be its own parent
11+               if ( $post_parent == $post_ID ) { // Post can't be its own parent
12                        $post_parent = 0;
13-               } elseif ( !empty($post_parent) ) {
14-                       $parent_post = get_post($post_parent);
15-                       // Check for circular dependency
16-                       if ( $parent_post->post_parent == $post_ID )
17+               } else { // Check for circular dependency
18+                       $post_ancestor_id = $post_parent;
19+                       while ( $post_ancestor_id && $post_ancestor = get_post( $post_ancestor_id ) ) {
20+                               if ( $post_ancestor->post_parent == $post_ID ) {
21+                                       $post_parent = 0;
22+                                       break;
23+                               } else {
24+                                       $post_ancestor_id = $post_ancestor->post_parent;
25+                               }
26+                       }
27+                       if ( $post_ancestor_id ) // $post_ancestor is false => ancestor does not exist
28                                $post_parent = 0;
29                }
30        }