The get_post_ancestors() WordPress PHP function retrieves the IDs of the ancestors of a post.
Usage
get_post_ancestors( $post )
Example:
Input: $post_id = 45;
Output: [ 32, 20, 12 ]
(An array of ancestor IDs)
Parameters
$post (int|WP_Post)
– Required. Post ID or post object.
More information
See WordPress Developer Resources: get_post_ancestors()
Examples
Display the top-level page thumbnail
This code displays the thumbnail of the top-level page in a hierarchy.
global $post; $parents = get_post_ancestors($post); $id = $post->ID; if (!empty($parents)) { $id = array_pop($parents); } if (has_post_thumbnail($id)) { echo get_the_post_thumbnail($id, 'thumbnail'); }
Add a body class based on the top-level page slug
This code adds a body class based on the top-level page slug in a hierarchy.
$class = ''; if (is_page()) { global $post; $parents = get_post_ancestors($post->ID); $id = ($parents) ? $parents[count($parents) - 1] : $post->ID; $parent = get_post($id); $class = $parent->post_name; } <body <?php body_class($class); ?>>
Add a body class based on a custom field
This code adds a body class based on a custom field body_class
from the top-level page in a hierarchy.
$class = ''; if (is_page()) { global $post; $parents = get_post_ancestors($post->ID); $id = ($parents) ? $parents[count($parents) - 1] : $post->ID; $class = get_post_meta($id, 'body_class', true); } <body <?php body_class($class); ?>>
Retrieve the top-level page title
This code retrieves the top-level page title in a hierarchy.
global $post; $parents = get_post_ancestors($post); if (!empty($parents)) { $top_level_id = array_pop($parents); $top_level_page = get_post($top_level_id); echo $top_level_page->post_title; }
Check if a post has a specific ancestor
This code checks if a post has a specific ancestor (e.g., ancestor with ID 32).
$ancestor_id = 32; $parents = get_post_ancestors($post); if (in_array($ancestor_id, $parents)) { echo 'This post has the specified ancestor.'; } else { echo 'This post does not have the specified ancestor.'; }