WordPress.org

Make WordPress Core

Ticket #33045: 33045.9.diff

File 33045.9.diff, 2.8 KB (added by xkon, 8 months ago)
  • src/wp-includes/post-template.php

    diff --git a/src/wp-includes/post-template.php b/src/wp-includes/post-template.php
    index 0ad352c328..4e6515b4b0 100644
    a b function wp_list_post_revisions( $post_id = 0, $type = 'all' ) { 
    19631963        echo $rows;
    19641964        echo '</ul>';
    19651965}
     1966
     1967/**
     1968 * Retrieve the parent post object.
     1969 *
     1970 * @since 5.7.0
     1971 *
     1972 * @param int|WP_Post|null $post Optional. Post ID or post object.
     1973 *
     1974 * @return WP_Post Parent post object.
     1975 */
     1976function get_parent_post( $post = null ) {
     1977        $wp_post = get_post( $post );
     1978        return ! empty( $wp_post->post_parent ) ? get_post( $wp_post->post_parent ) : null;
     1979}
     1980
     1981/**
     1982 * Whether the post has a parent post.
     1983 *
     1984 * @since 5.7.0
     1985 *
     1986 * @param int|WP_Post|null $post Optional. Post ID or post object.
     1987 *
     1988 * @return bool True is the post has a parent post, false otherwise.
     1989 */
     1990function has_parent_post( $post = null ) {
     1991        return (bool) get_parent_post( $post );
     1992}
  • tests/phpunit/tests/post/template.php

    diff --git a/tests/phpunit/tests/post/template.php b/tests/phpunit/tests/post/template.php
    index f1bcaebcf0..75dd3d193b 100644
    a b NO; 
    452452                $this->assertRegExp( '/><li.*>|<\/li></U', $menu );
    453453
    454454        }
     455
     456        /**
     457         * @ticket 33045
     458         */
     459        public function test_get_parent_post() {
     460                $post = array(
     461                        'post_status'  => 'publish',
     462                        'post_content' => rand_str(),
     463                        'post_title'   => rand_str(),
     464                        'post_type'    => 'page',
     465                );
     466
     467                // Insert two initial posts.
     468                $id_parent = wp_insert_post( $post );
     469                $id_child  = wp_insert_post( $post );
     470
     471                // Test if child get_parent_post() post returns Null by default.
     472                $parent = get_parent_post( $id_child );
     473                $this->assertNull( $parent );
     474
     475                // Update child post with a parent.
     476                wp_update_post(
     477                        array(
     478                                'ID'          => $id_child,
     479                                'post_parent' => $id_parent,
     480                        )
     481                );
     482
     483                // Test if child get_parent_post() post returns the parent object.
     484                $parent = get_parent_post( $id_child );
     485                $this->assertSame( $id_parent, $parent->ID );
     486        }
     487
     488        /**
     489         * @ticket 33045
     490         */
     491        public function test_has_parent_post() {
     492                $post = array(
     493                        'post_status'  => 'publish',
     494                        'post_content' => rand_str(),
     495                        'post_title'   => rand_str(),
     496                        'post_type'    => 'page',
     497                );
     498
     499                // Insert two initial posts.
     500                $id_parent = wp_insert_post( $post );
     501                $id_child  = wp_insert_post( $post );
     502
     503                // Test if child has_parent_post() post returns False by default.
     504                $parent = has_parent_post( $id_child );
     505                $this->assertFalse( $parent );
     506
     507                // Update child post with a parent.
     508                wp_update_post(
     509                        array(
     510                                'ID'          => $id_child,
     511                                'post_parent' => $id_parent,
     512                        )
     513                );
     514
     515                // Test if child has_parent_post() returns True.
     516                $parent = has_parent_post( $id_child );
     517                $this->assertTrue( $parent );
     518        }
    455519}