답변:
기본적으로는 아닙니다. 이를 위해 코드를 작성해야합니다. 필요한 코드를 제공 하는 멋진 pastebin 함수가 있습니다.
편집 (2011 년 12 월 19 일) :
여기 프로그래밍 방식으로 수행 할 수있는 방법이 있습니다. functions.php 파일에 다음 두 가지 기능을 추가하면 좋습니다. 이 코드는 무슨 일이 일어나고 있는지 설명하기 위해 주석을 달았지만 다음은 기대할 수있는 높은 수준입니다.
당신은 ...
코드는 ...
게시물에 여러 개의 URL을 포함하는 경우 YouTube URL을 올바르게 찾으려면 코드를 수정해야합니다. $attachments
컬렉션 을 반복 하고 YouTube URL처럼 보이는 URL을 스니핑하면됩니다.
function set_youtube_as_featured_image($post_id) {
// only want to do this if the post has no thumbnail
if(!has_post_thumbnail($post_id)) {
// find the youtube url
$post_array = get_post($post_id, ARRAY_A);
$content = $post_array['post_content'];
$youtube_id = get_youtube_id($content);
// build the thumbnail string
$youtube_thumb_url = 'http://img.youtube.com/vi/' . $youtube_id . '/0.jpg';
// next, download the URL of the youtube image
media_sideload_image($youtube_thumb_url, $post_id, 'Sample youtube image.');
// find the most recent attachment for the given post
$attachments = get_posts(
array(
'post_type' => 'attachment',
'numberposts' => 1,
'order' => 'ASC',
'post_parent' => $post_id
)
);
$attachment = $attachments[0];
// and set it as the post thumbnail
set_post_thumbnail( $post_id, $attachment->ID );
} // end if
} // set_youtube_as_featured_image
add_action('save_post', 'set_youtube_as_featured_image');
function get_youtube_id($content) {
// find the youtube-based URL in the post
$urls = array();
preg_match_all('#\bhttps?://[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/))#', $content, $urls);
$youtube_url = $urls[0][0];
// next, locate the youtube video id
$youtube_id = '';
if(strlen(trim($youtube_url)) > 0) {
parse_str( parse_url( $youtube_url, PHP_URL_QUERY ) );
$youtube_id = $v;
} // end if
return $youtube_id;
} // end get_youtube_id
참고로 게시물에 미리보기 이미지가 없으며 게시물 미리보기 이미지가 설정된 후에는 실행되지 않는다고 가정합니다.
둘째, 게시물 미리보기 이미지를 제거한 다음 미디어 업 로더를 사용하여이 게시물에 이미지를 첨부하면 가장 최근 이미지가 사용됩니다.
get_youtube_id
위의 코드와 함께 jetpack을 사용하는 경우 앱에서 500 서버 오류가 발생하는 명명 된 메소드가 포함되어 있습니다 . 이 함수의 이름을 바꾸면 작동합니다.