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? Commented 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, Commented Apr 25, 2013 at 7:12
  • @VinodDalvi I edited the queston.
    – metalzade
    Commented Apr 25, 2013 at 7:24
  • @RajeevVyas so you're saying there is no way to get the ID of blog page?
    – metalzade
    Commented 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. Commented 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
    Commented 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
    Commented 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
    Commented Apr 25, 2013 at 11:42
  • You might want to add global $post
    – Jack
    Commented Oct 24, 2016 at 10:11

Your Answer

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

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