diff --git a/src/wp-includes/post.php b/src/wp-includes/post.php index 5ebf42f89d..33a4c43314 100644 --- a/src/wp-includes/post.php +++ b/src/wp-includes/post.php @@ -6251,16 +6251,15 @@ function _publish_post_hook( $post_id ) { } /** - * Return the post's parent's post_ID + * Return the post's parent post ID. * * @since 3.1.0 * - * @param int $post_ID - * + * @param int|WP_Post $post Post ID or post object. Defaults to global $post. * @return int|false Post parent ID, otherwise false. */ -function wp_get_post_parent_id( $post_ID ) { - $post = get_post( $post_ID ); +function wp_get_post_parent_id( $post ) { + $post = get_post( $post ); if ( ! $post || is_wp_error( $post ) ) { return false; } diff --git a/tests/phpunit/tests/post/wpGetPostParentId.php b/tests/phpunit/tests/post/wpGetPostParentId.php new file mode 100644 index 0000000000..1f54934d9b --- /dev/null +++ b/tests/phpunit/tests/post/wpGetPostParentId.php @@ -0,0 +1,42 @@ +post->create(); + $p2 = self::factory()->post->create( array( 'post_parent' => $p1 ) ); + $post = get_post( $p2 ); + $this->assertTrue( $post instanceof WP_Post ); + $this->assertEquals( $p1, wp_get_post_parent_id( $post ) ); + } + + public function test_wp_get_post_parent_id_with_post_id() { + $p1 = self::factory()->post->create(); + $p2 = self::factory()->post->create( array( 'post_parent' => $p1 ) ); + $this->assertEquals( $p1, wp_get_post_parent_id( $p2 ) ); + } + + public function test_wp_get_post_parent_id_with_non_existing_id_default_to_global_post_id() { + $p1 = self::factory()->post->create(); + $GLOBALS['post'] = self::factory()->post->create( array( 'post_parent' => $p1 ) ); + $this->assertEquals( $p1, wp_get_post_parent_id( 0 ) ); + unset( $GLOBALS['post'] ); + } + + public function test_wp_get_post_parent_id_with_boolean_default_to_global_post_id() { + $p1 = self::factory()->post->create(); + $GLOBALS['post'] = self::factory()->post->create( array( 'post_parent' => $p1 ) ); + $this->assertEquals( $p1, wp_get_post_parent_id( false ) ); + unset( $GLOBALS['post'] ); + } + + public function test_wp_get_post_parent_id_with_string_default_to_false() { + $p1 = self::factory()->post->create(); + $GLOBALS['post'] = self::factory()->post->create( array( 'post_parent' => $p1 ) ); + $this->assertFalse( wp_get_post_parent_id( 'string' ) ); + unset( $GLOBALS['post'] ); + } +}