pablo-sg-pacheco
6/28/2016 - 2:47 PM

Set thumbnail by external image URL

Set thumbnail by external image URL

<?php

function setThumbnailByUrl( $imgUrl, $post_id ) {
	$post = get_post($post_id);
	$media = media_sideload_image($imgUrl, $post_id, $post->post_title);

	// therefore we must find it so we can set it as featured ID
	if ( !empty($media) && !is_wp_error($media) ) {
		$args = array(
			'post_type'		 => 'attachment',
			'posts_per_page' => -1,
			'post_status'	 => 'any',
			'post_parent'	 => $post_id
		);

		// reference new image to set as featured
		$attachments = get_posts($args);

		if ( isset($attachments) && is_array($attachments) ) {
			foreach ( $attachments as $attachment ) {
				// grab source of full size images (so no 300x150 nonsense in path)
				$image = wp_get_attachment_image_src($attachment->ID, 'full');
				// determine if in the $media image we created, the string of the URL exists
				if ( strpos($media, $image[0]) !== false ) {
					// if so, we found our image. set it as thumbnail
					set_post_thumbnail($post_id, $attachment->ID);
					// only want one image
					break;
				}
			}
		}
	}
}