Yanıtlar:
Doğal olarak değil. Bunu yapmak için bir kod yazmanız gerekir - bunu yapmak için gerekli kodu sağlayan güzel bir macun işlevi vardır.
Düzenleme (19.12.2011):
Evet, bunu programlı olarak nasıl yapabilirsiniz? Function.php dosyanıza aşağıdaki iki işlevi ekleyin; gitmekte fayda var. Kod, neler olduğunu açıklamak için yorumlandı, ancak burada ne olacağını yüksek seviyede görebilirsiniz:
Mecbursun...
Kod ...
Yayınınıza birden çok URL eklerseniz, YouTube URL'sini doğru bir şekilde bulmak için kodu değiştirmeniz gerektiğini unutmayın. Bu, $attachments
koleksiyonda yineleme yapıp hangi URL'lerin bir YouTube URL'si gibi göründüğünü koklayarak yapılabilir .
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
Dikkat edilmesi gereken bir nokta, bunun yayınınızın küçük resim olmadığını ve bir gönderi küçük resmi ayarlandıktan sonra tetiklenmeyeceğini varsayar.
İkincisi, yazı küçük resmini kaldırır ve ardından medya yükleyiciyi kullanarak bu yazıya bir resim eklerseniz, en son resim kullanılır.
get_youtube_id
yukarıdaki kodla jetpack kullanırsanız uygulamanızda 500 sunucu hatası verecek şekilde adlandırılmış bir yöntem içerdiğini unutmayın . Bu işlevi yeniden adlandırırsanız, işe yaramaz