If the current post lacks a thumbnail use first Image in Post
-
I’m trying to do something I thought would be simple but I’m having a hard time putting it together. Here is what I want, use the new post_thumbnail feature if one is defined but if one is not defined use the first image in post. So far this is my code.
Function.php<?php add_theme_support( 'post-thumbnails' ); set_post_thumbnail_size( 120, 120, true ); // 120 pixels wide by 120 pixels tall, hard crop mode add_filter( 'post_thumbnail_html', 'my_post_image_html', 10, 3 ); function my_post_image_html( $html, $post_id, $post_image_id ) { $html = '<a href="' . get_permalink( $post_id ) . '" title="' . esc_attr( get_post_field( 'post_title', $post_id ) ) . '">' . $html . '</a>'; return $html; } function catch_that_image() { global $post, $posts; $first_img = ''; ob_start(); ob_end_clean(); $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches); $first_img = $matches [1] [0]; if(empty($first_img)){ //Defines a default image $first_img = "/images/default.jpg"; } return $first_img; } ?>
and this is how I insert in my theme:
<?php if ( has_post_thumbnail() ) { // the current post has a thumbnail } else { // the current post lacks a thumbnail echo catch_that_image(); } ?>
If I define the thumbnail it works fine, otherwise it only returns the URL of the image and not the thumbnail itself. I know it has to do with the echo catch_that_image(); statement but I’m not sure what to do with it or how to get it into a img src=. Could someone help with this please. I also would like the images to link to the post. Thanks everyone
- The topic ‘If the current post lacks a thumbnail use first Image in Post’ is closed to new replies.