3

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.

11
  • 1
    Can you explain the situation, Why do you want to get it? Apr 25, 2013 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, Apr 25, 2013 at 7:12
  • @VinodDalvi I edited the queston.
    – metalzade
    Apr 25, 2013 at 7:24
  • @RajeevVyas so you're saying there is no way to get the ID of blog page?
    – metalzade
    Apr 25, 2013 at 7:24
  • @metalzade offcourse not, try using get_option('page_for_posts') or see the is_home function from codex for reference. Apr 25, 2013 at 7:37

2 Answers 2

5

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

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

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

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

https://make.wordpress.org/core/2021/02/10/introducing-new-post-parent-related-functions-in-wordpress-5-7/

1
  • "These functions were originally introduced as get_parent_post() and has_parent_post() but have since been renamed to get_post_parent() and has_post_parent()"
    – markdwhite
    Jun 11, 2021 at 2:37
1

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

3
  • 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, 2013 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, 2013 at 11:42
  • You might want to add global $post
    – Jack
    Oct 24, 2016 at 10:11

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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