In Genesis Facebook group a user asked:
Hello friends, I was able to move my entry-header outside the loop and make it full width, thanks to Sridhar Katakam! However, I’d like to take my featured image outside the loop (preferably above the entry-header).
Here’s what it currently looks like: http://leaguewp.com/web-hosting-service-guide/
Here’s how I’d rather it appear on single post: http://www.nab.com.au/personal/learn/managing-your-debts/pay-less-interest-on-your-home-loan-with-100-percent-offset
I’d appreciate any help. Thanks in advance!
In this tutorial we shall
- add a div.post-hero below header on single Posts and set the featured image as its cover background.
- use a fallback image from the images directory if there’s no featured image set
- display the entry title inside the div and remove it from the entry header
Step 1
Add the following in child theme’s functions.php:
// Register a custom image size for hero images on single Posts | |
add_image_size( 'post-image', 1600, 400, true ); | |
add_action( 'genesis_after_header', 'sk_hero_image' ); | |
function sk_hero_image() { | |
// if we are not on a single Post, abort. | |
if ( !is_singular( 'post' ) ) { | |
return; | |
} | |
// set $image to URL of featured image. If featured image is not present, set it to post-image.jpg in child theme's images directory. | |
if ( has_post_thumbnail() ) { | |
$image = genesis_get_image( 'format=url&size=post-image' ); | |
} else { | |
$image = get_stylesheet_directory_uri() . '/images/post-image.jpg'; | |
} ?> | |
<div class="post-hero" style="background-image: url('<?php echo $image; ?>')"> | |
<div class="wrap"> | |
<?php genesis_do_post_title(); ?> | |
</div> | |
</div> | |
<?php | |
// Remove entry title | |
remove_action( 'genesis_entry_header', 'genesis_do_post_title' ); | |
} |
Upload your desired fallback image to child theme’s images
directory having the name of post-image.jpg.
Step 2
Step 3
Add the following in child theme’s style.css:
.post-hero { | |
padding: 200px 0; | |
background-size: cover; | |
background-repeat: no-repeat; | |
background-position: center; | |
} | |
.post-hero .entry-title { | |
margin-bottom: 0; | |
color: #fff; | |
background-color: rgba(0,0,0,.75); | |
padding: 15px; | |
text-transform: uppercase; | |
max-width: 50%; | |
} | |
@media only screen and (max-width: 1023px) { | |
.post-hero .entry-title { | |
max-width: none; | |
} | |
} |