2

I have created a theme that uses a featured image on every page.

In settings, I have setup my "Posts Page" to be "news"...how do I get the featured image from "news" to display?

The following will display the id of my posts page:

<?php
    $page_for_posts = get_option( 'page_for_posts' );
    echo $page_for_posts;
?>

So I was thinking that this would display the featured image for my posts page:

<?php
    $page_for_posts = get_option( 'page_for_posts' );
    echo get_the_post_thumbnail($page_for_posts, 'large');
?>

But, somehow it doesn't :( Do I need to add this code in the loop or something?

Any ideas?

Thanks, Josh

4

I feel like such an idiot!! I was trouble-shooting this last night and I guess I removed the featured image for the news page...so, of course, the image wasn't showing up!

I added the featured image and the following code:

<?php if(is_home()) { ?>
    <?php
        $page_for_posts = get_option( 'page_for_posts' );
        echo get_the_post_thumbnail($page_for_posts, 'large');
    ?>
<?php } ?>

Now, everything works as expected (Note: cross-posted from, and issue resolved in, the wordpress.org support forums.)

| improve this answer | |
0

You could always do this instead;

$id = get_the_ID();
echo get_the_post_thumbnail($id, 'large');

get_the_ID() gets the ID of the current post/page you are on, and then you pass that into your get_the_post_thumbnail function.

This avoids you needing to use a get_option to retrieve a field from the options table.

| improve this answer | |
  • This won't work on page_for_posts. WordPress hijacks the page entirely, and the Loop template tags will return data from the Loop, rather than from the static Page itself. – Chip Bennett May 18 '12 at 20:31
  • Even to the point of not returning the page ID? Well... that's a hostile takeover. Sounds silly that they don't pass the ID back, regardless of their hijacking. In that case revert to get_option( 'page_for_posts' ). – Adam May 18 '12 at 20:39

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