mirror of
https://github.com/gosticks/wordpress-develop.git
synced 2025-10-16 12:05:38 +00:00
Posts, Post Types: Introduce new functions for determining if a post has a parent (has_post_parent()) and to fetch the post parent (get_post_parent()).
These functions are simple but reduce the logic needed in themes and plugins. Props ramiy, sebastian.pisula, birgire, audrasjb, xkon Fixes #33045 git-svn-id: https://develop.svn.wordpress.org/trunk@50127 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
5c5f859d45
commit
729bb10f31
@ -1963,3 +1963,28 @@ function wp_list_post_revisions( $post_id = 0, $type = 'all' ) {
|
||||
echo $rows;
|
||||
echo '</ul>';
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the parent post object for the given post.
|
||||
*
|
||||
* @since 5.7.0
|
||||
*
|
||||
* @param int|WP_Post|null $post Optional. Post ID or WP_Post object. Default is global $post.
|
||||
* @return WP_Post|null Parent post object, or null if there isn't one.
|
||||
*/
|
||||
function get_parent_post( $post = null ) {
|
||||
$wp_post = get_post( $post );
|
||||
return ! empty( $wp_post->post_parent ) ? get_post( $wp_post->post_parent ) : null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether the given post has a parent post.
|
||||
*
|
||||
* @since 5.7.0
|
||||
*
|
||||
* @param int|WP_Post|null $post Optional. Post ID or WP_Post object. Default is global $post.
|
||||
* @return bool Whether the post has a parent post.
|
||||
*/
|
||||
function has_parent_post( $post = null ) {
|
||||
return (bool) get_parent_post( $post );
|
||||
}
|
||||
|
||||
@ -452,4 +452,65 @@ NO;
|
||||
$this->assertRegExp( '/><li.*>|<\/li></U', $menu );
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @ticket 33045
|
||||
*/
|
||||
public function test_get_parent_post() {
|
||||
$post = array(
|
||||
'post_status' => 'publish',
|
||||
'post_type' => 'page',
|
||||
);
|
||||
|
||||
// Insert two initial posts.
|
||||
$parent_id = self::factory()->post->create( $post );
|
||||
$child_id = self::factory()->post->create( $post );
|
||||
|
||||
// Test if child get_parent_post() post returns Null by default.
|
||||
$parent = get_parent_post( $child_id );
|
||||
$this->assertNull( $parent );
|
||||
|
||||
// Update child post with a parent.
|
||||
wp_update_post(
|
||||
array(
|
||||
'ID' => $child_id,
|
||||
'post_parent' => $parent_id,
|
||||
)
|
||||
);
|
||||
|
||||
// Test if child get_parent_post() post returns the parent object.
|
||||
$parent = get_parent_post( $child_id );
|
||||
$this->assertNotNull( $parent );
|
||||
$this->assertSame( $parent_id, $parent->ID );
|
||||
}
|
||||
|
||||
/**
|
||||
* @ticket 33045
|
||||
*/
|
||||
public function test_has_parent_post() {
|
||||
$post = array(
|
||||
'post_status' => 'publish',
|
||||
'post_type' => 'page',
|
||||
);
|
||||
|
||||
// Insert two initial posts.
|
||||
$parent_id = self::factory()->post->create( $post );
|
||||
$child_id = self::factory()->post->create( $post );
|
||||
|
||||
// Test if child has_parent_post() post returns False by default.
|
||||
$parent = has_parent_post( $child_id );
|
||||
$this->assertFalse( $parent );
|
||||
|
||||
// Update child post with a parent.
|
||||
wp_update_post(
|
||||
array(
|
||||
'ID' => $child_id,
|
||||
'post_parent' => $parent_id,
|
||||
)
|
||||
);
|
||||
|
||||
// Test if child has_parent_post() returns True.
|
||||
$parent = has_parent_post( $child_id );
|
||||
$this->assertTrue( $parent );
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user