// Save Featured Image If It's a youtube video add_action('save_post', 'wds_video_sideload_post_thumb'); function wds_video_sideload_post_thumb() { global $post; $youtube_url = get_post_meta( $post->ID, 'videobox', true ); $youtubeid = youtubeid($youtube_url); $thumb_url = 'http://img.youtube.com/vi/'. $youtubeid .'/0.jpg'; require_once(ABSPATH . 'wp-admin/includes/file.php'); require_once(ABSPATH . 'wp-admin/includes/media.php'); set_time_limit(300); if ( ! empty($thumb_url) ) { // Download file to temp location $tmp = download_url( $thumb_url ); // Set variables for storage // fix file filename for query strings preg_match('/[^\?]+\.(jpg|JPG|jpe|JPE|jpeg|JPEG|gif|GIF|png|PNG)/', $thumb_url, $matches); $file_array['name'] = basename($matches[0]); $file_array['tmp_name'] = $tmp; // If error storing temporarily, unlink if ( is_wp_error( $tmp ) ) { @unlink($file_array['tmp_name']); $file_array['tmp_name'] = ''; } // do the validation and storage stuff $thumbid = media_handle_sideload( $file_array, $post->ID, $desc ); // If error storing permanently, unlink if ( is_wp_error($thumbid) ) { @unlink($file_array['tmp_name']); return $thumbid; } } set_post_thumbnail( $post, $thumbid ); } function youtubeid($url) { if (preg_match('%youtube\\.com/(.+)%', $url, $match)) { $match = $match[1]; $replace = array("watch?v=", "v/", "vi/"); $match = str_replace($replace, "", $match); $match = substr( $match, 0, ( strpos( $match, '&') ) ); } return $match; }