From aec78f5a160299944ed96724589220a6bdc59762 Mon Sep 17 00:00:00 2001 From: Peter Wilson Date: Wed, 17 Nov 2021 03:23:40 +0000 Subject: [PATCH] Posts, Post Types: Use global post as the default for `wp_get_post_parent_id()`. Convert the `$post` parameter of `wp_get_post_parent_id()` to optional, defaulting to the current global post object when called within the loop. Props danielpost, davidbaumwald, SergeyBiryukov, birgire, audrasjb, hellofromTonya, TimothyBlynJacobs. Fixes #48358. git-svn-id: https://develop.svn.wordpress.org/trunk@52194 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/post.php | 5 +++-- tests/phpunit/tests/post/wpGetPostParentId.php | 9 +++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/wp-includes/post.php b/src/wp-includes/post.php index 286ad8ccf6..5a0671ac46 100644 --- a/src/wp-includes/post.php +++ b/src/wp-includes/post.php @@ -7642,12 +7642,13 @@ function _publish_post_hook( $post_id ) { * Returns the ID of the post's parent. * * @since 3.1.0 + * @since 5.9.0 The `$post` parameter was made optional. * - * @param int|WP_Post $post Post ID or post object. + * @param int|WP_Post|null $post Optional. Post ID or post object. Defaults to global $post. * @return int|false Post parent ID (which can be 0 if there is no parent), * or false if the post does not exist. */ -function wp_get_post_parent_id( $post ) { +function wp_get_post_parent_id( $post = null ) { $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 index bd25232830..c2160498bc 100644 --- a/tests/phpunit/tests/post/wpGetPostParentId.php +++ b/tests/phpunit/tests/post/wpGetPostParentId.php @@ -33,6 +33,15 @@ class Tests_Post_wpGetPostParentId extends WP_UnitTestCase { $this->assertSame( self::$parent_post_id, wp_get_post_parent_id( self::$post_id ) ); } + /** + * @ticket 48358 + * @covers ::wp_get_post_parent_id + */ + public function test_wp_get_post_parent_id_with_no_post_argument_default_to_global_post_id() { + $GLOBALS['post'] = get_post( self::$post_id ); + $this->assertSame( self::$parent_post_id, wp_get_post_parent_id() ); + } + public function test_wp_get_post_parent_id_with_non_existing_id_default_to_global_post_id() { $GLOBALS['post'] = get_post( self::$post_id ); $this->assertSame( self::$parent_post_id, wp_get_post_parent_id( 0 ) );