I have a template which outputs the blog posts (Blog Page), I open one of the posts which use single.php template, Now how can I get the ID of it's parent which is the (Blog Page)?

I should say that I want to use this ID to get the meta box value of the blog page in single.php.

The same goes for a custom post type, let's say 'project', Where a page template list the project's posts (Projects Page) and single-project.php for the single project post. in this case I want to get the (Projects Page) ID in single-project.php.

  • 1
    Can you explain the situation, Why do you want to get it? – Vinod Dalvi Apr 25 '13 at 7:11
  • Post's parent id is not a blog page, but another post. There is no relation between post and your blog page, – Rajeev Vyas Apr 25 '13 at 7:12
  • @VinodDalvi I edited the queston. – metalzade Apr 25 '13 at 7:24
  • @RajeevVyas so you're saying there is no way to get the ID of blog page? – metalzade Apr 25 '13 at 7:24
  • @metalzade offcourse not, try using get_option('page_for_posts') or see the is_home function from codex for reference. – Rajeev Vyas Apr 25 '13 at 7:37

WordPress 5.7 introduces a new helper function to more easily fetch the parent post's ID: get_parent_post()

This can also be used in conjunction with has_parent_post(), so you could have something like looks like:

<?php if ( has_parent_post() ) : ?>
    <a href="<?php the_permalink( get_parent_post() ); ?>">
        echo sprintf(
            esc_html__( 'Back to parent page: %s', 'text-domain' ),
            get_the_title( get_parent_post() )
<?php endif; ?>

Note that these functions accept a "child post ID" as a parameter, which defaults to the current post.



Use $post->post_parent to get the parent ID of the post. Here $post is an object with properties.

  • I was able to get the ID of the blog page by get_option('page_for_posts') but no success in custom post type as $post->post_parent returns 0. – metalzade Apr 25 '13 at 8:09
  • $post->post_parent is working for me. print your $post object,then you will there is [post_parent] is there. – saifur Apr 25 '13 at 11:42
  • You might want to add global $post – Jack Oct 24 '16 at 10:11

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.