Title: Amelioration Thumbnail
Last modified: February 18, 2022

---

# Amelioration Thumbnail

 *  [jmpicot](https://wordpress.org/support/users/jmpicot/)
 * (@jmpicot)
 * [4 years, 3 months ago](https://wordpress.org/support/topic/amelioration-thumbnail/)
 * Hello,
 * J’ai remarqué que si on force les thumbnails (force_thumbnail=yes), on ne peut
   pas agir sur la taille (thumbnail_size=75,75).
 * En effet, le code n’est pas prévu dans le fichier lcp-thumbnail.php (get_thumbnail()).
 * Je propose donc l’évolution suivante qui permet de récupérer la miniature associée
   au premier média du post :
 *     ```
       /**
          * Get the post Thumbnail
          * @see http://codex.wordpress.org/Function_Reference/get_the_post_thumbnail
          * @param unknown_type $single
          *
          */
         public function get_thumbnail($single, $thumbnail, $thumbnail_size, $force_thumbnail, $lcp_thumb_class = null){
           $lcp_thumbnail = null;
   
           if( $thumbnail == 'yes' ){
             $lcp_thumbnail = '';
       	  $image_sizes = array_unique(
       	    array_merge(
       	  	  get_intermediate_image_sizes(),
       		  array("thumbnail", "medium", "large", "full")
       	    )
       	  );
   
       	  if( in_array( $thumbnail_size,  $image_sizes ) ){
       	    $lcp_thumb_size = $thumbnail_size;
       	  } elseif( $thumbnail_size ) {
       	    $lcp_thumb_size = explode(",", $thumbnail_size);
       	  } else {
       	    $lcp_thumb_size = 'thumbnail';
       	  }
   
             if ( has_post_thumbnail($single->ID) ){
   
   
               $lcp_thumbnail = '<a href="' . esc_url(get_permalink($single->ID)) .
                              '" title="' . esc_attr($single->post_title) . '">';
   
               $lcp_thumbnail .= get_the_post_thumbnail(
                   $single->ID,
                   $lcp_thumb_size,
                   array(
                       'alt' => esc_attr($single->post_title),
                       // If we have a class use it, otherwise use default
                       'class' => ( $lcp_thumb_class != null ) ? $lcp_thumb_class : 'lcp_thumbnail'
                   )
               );
               $lcp_thumbnail .= '</a>';
             } else {
       		  $content = get_the_content();
       		  $thumb_id = $this->get_first_content_image_id($content);;
       		  if ($thumb_id) {
       			  echo $thumb_id;
       			  $lcp_thumbnail = '<a href="' . esc_url(get_permalink($single->ID)) . '" title="' . esc_attr($single->post_title) . '">';
       		      $lcp_thumbnail .= wp_get_attachment_image(
       				$thumb_id,
       				$lcp_thumb_size,
       				array(
       					'alt' => esc_attr($single->post_title),
       					// If we have a class use it, otherwise use default
       					'class' => ( $lcp_thumb_class != null ) ? $lcp_thumb_class : 'lcp_thumbnail'
       				));
       			  $lcp_thumbnail .= '</a>';
       		  } else {
       			  // if thumbnail is requested but not found as featured image, grab first image in the content of the post
       			  if ( ($force_thumbnail === 'yes'|| $force_thumbnail === 'true') && preg_match('~<img[^>]*src\s?=\s?[\'"]([^\'"]*)~i',get_the_content(), $imgMatches)) {
       			    $lcp_thumbnail = '<a href="' . esc_url(get_permalink($single->ID)) .
       							 '" title="' . esc_attr($single->post_title) . '">';
   
       			    $lcp_thumbnail .= '<img src="' . esc_url($imgMatches[1]) . '" ';
       			    if ( $lcp_thumb_class != null ) {  // thumbnail class passed as parameter to shortcode
       			  	  $lcp_thumbnail .= 'class="' . $lcp_thumb_class . '" ';
       			    }
       			    else { // Otherwise, use this class name
       				  $lcp_thumbnail .= 'class="lcp_thumbnail" ';
       			    }
       			    $lcp_thumbnail .= ' alt="' . esc_attr($single->post_title) . '" /></a>';
       			  }
       			}
       	  }
           } else {
             # Check for a YouTube video thumbnail
             $lcp_thumbnail = $this->check_youtube_thumbnail($single->content);
           }
           return $lcp_thumbnail;
         }
   
       private function get_first_content_image_id($content) {
       	// set variables
       	global $wpdb;
   
       	if (isset($content)) {
       	  // look for images in HTML code
   
       	  preg_match_all('/<img[^>]+>/i', $content, $all_img_tags);
   
       	  if ($all_img_tags) {
       	    foreach ($all_img_tags[0] as $img_tag) {
       		  // find class attribute and catch its value
       		  preg_match( '/<img.*?class\s*=\s*[\'"]([^\'"]+)[\'"][^>]*>/i', $img_tag, $img_class );
       		    if ($img_class) {
       		    // Look for the WP image id
       		    preg_match( '/wp-image-([\d]+)/i', $img_class[1], $thumb_id );
   
       		    // if first image id found: check whether is image
       		    if ($thumb_id) {
       		      $img_id = absint( $thumb_id[1] );
       			  // if is image: return its id
       			  if (wp_attachment_is_image($img_id)) {
       			    return $img_id;
       			  }
       		    } // if(thumb_id)
       		  } // if(img_class)
   
       		  // else: try to catch image id by its url as stored in the database
       		  // find src attribute and catch its value
   
       		  preg_match( '/<img.*?src\s*=\s*[\'"]([^\'"]+)[\'"][^>]*>/i', $img_tag, $img_src );
   
       		  if ($img_src) {
       		    // delete optional query string in img src
       		    $url = preg_replace('/([^?]+).*/', '\1', $img_src[1]);
   
       		    // delete image dimensions data in img file name, just take base name and extension
       		    $url = preg_replace( '/(.+)-\d+x\d+\.(\w+)/', '\1.\2', $url );
   
       		    // if path is protocol relative then set it absolute
       		    if (0 === strpos($url, '//')) {
       			  $url = $this->defaults[ 'site_protocol' ] . ':' . $url;
   
       			  // if path is domain relative then set it absolute
       			} elseif (0 === strpos($url, '/')) {
       			  $url = $this->defaults[ 'site_url' ] . $url;
       			}
   
       			// look up its id in the db
       			$thumb_id = $wpdb->get_var( $wpdb->prepare( "SELECT <code>ID</code> FROM $wpdb->posts WHERE <code>guid</code> = '%s'", $url ) );
   
       			// if id is available: return it
       			if ($thumb_id) {
       			  return absint($thumb_id);
       			} // if(thumb_id)
         		  } // if(img_src)
       		} // foreach(img_tag)
       	  } // if(all_img_tags)
       	} // if (post content)
   
           // if nothing found: return 0
           return 0;
         }
       ```
   

Viewing 3 replies - 1 through 3 (of 3 total)

 *  Thread Starter [jmpicot](https://wordpress.org/support/users/jmpicot/)
 * (@jmpicot)
 * [4 years, 3 months ago](https://wordpress.org/support/topic/amelioration-thumbnail/#post-15379792)
 * Désolé, dans mon code ci-dessus il trine un petit echo (#debug) :
    echo $thumb_id;
 * A supprimer
 *  Plugin Contributor [zymeth25](https://wordpress.org/support/users/zymeth25/)
 * (@zymeth25)
 * [4 years, 3 months ago](https://wordpress.org/support/topic/amelioration-thumbnail/#post-15381623)
 * Hello, thanks for sharing your code. If you would like us to review it for merging
   into the plugin, please create a pull request on [our Github repository](https://github.com/picandocodigo/List-Category-Posts).
 * Thanks!
 *  Thread Starter [jmpicot](https://wordpress.org/support/users/jmpicot/)
 * (@jmpicot)
 * [4 years, 3 months ago](https://wordpress.org/support/topic/amelioration-thumbnail/#post-15419720)
 * Bonjour,
 * Je viens de pousser ma pull request, j’espère qu’elle sera prise en compte.
 * Merci
 * JM

Viewing 3 replies - 1 through 3 (of 3 total)

The topic ‘Amelioration Thumbnail’ is closed to new replies.

 * ![](https://ps.w.org/list-category-posts/assets/icon-256x256.png?rev=2517221)
 * [List category posts](https://wordpress.org/plugins/list-category-posts/)
 * [Frequently Asked Questions](https://wordpress.org/plugins/list-category-posts/#faq)
 * [Support Threads](https://wordpress.org/support/plugin/list-category-posts/)
 * [Active Topics](https://wordpress.org/support/plugin/list-category-posts/active/)
 * [Unresolved Topics](https://wordpress.org/support/plugin/list-category-posts/unresolved/)
 * [Reviews](https://wordpress.org/support/plugin/list-category-posts/reviews/)

 * 3 replies
 * 2 participants
 * Last reply from: [jmpicot](https://wordpress.org/support/users/jmpicot/)
 * Last activity: [4 years, 3 months ago](https://wordpress.org/support/topic/amelioration-thumbnail/#post-15419720)
 * Status: not a support question