Function and usage of get_post_ancestors() in wordpress


Answers ( 1 )


    The get_post_ancestors() function in WordPress is a useful tool for retrieving the hierarchical lineage of a post, particularly in scenarios where posts have parent-child relationships, like pages in a hierarchical structure.


    • Name: get_post_ancestors()
    • Purpose: Retrieves the IDs of the ancestors of a post.


    • $post (int|WP_Post): This is a required parameter. It can either be an integer representing the ID of the post or a WP_Post object itself. This parameter specifies the post for which you want to find the ancestors.


    • int[]: The function returns an array of integers. Each integer in the array is an ID of an ancestor of the specified post. The array follows the order of ancestry from the direct parent upwards. If the post has no ancestors, the function returns an empty array.

    Sample Usage:

    1. Basic Example:

      $post_id = 123; // Assume this is the ID of a post
      $ancestors = get_post_ancestors($post_id);
      if (!empty($ancestors)) {
          foreach ($ancestors as $ancestor_id) {
              echo "Ancestor ID: " . $ancestor_id . "<br>";
      } else {
          echo "This post has no ancestors.";

      In this example, $post_id represents the ID of the post whose ancestors you're looking to retrieve. The get_post_ancestors() function is called with this ID, and the returned array is checked. If there are ancestors, their IDs are printed. Otherwise, a message is displayed indicating that there are no ancestors.

    2. Using WP_Post Object:

      $post_obj = get_post(123); // Retrieve post object for post ID 123
      $ancestors = get_post_ancestors($post_obj);
      // Similar handling as the previous example

      Here, instead of directly using a post ID, a WP_Post object is retrieved using get_post() and passed to the get_post_ancestors() function. The handling of the output remains the same.


    • This function is particularly useful for content structured in a hierarchical manner, like pages.
    • It helps in understanding the structure of nested content and can be used for breadcrumb navigation, structured content display, and more.
    • It's important to note that this function is more commonly used with hierarchical post types like 'page' rather than 'post', as posts typically don't have a hierarchical structure in WordPress.

Leave an answer