Antworten:
Nicht von Haus aus. Sie müssten Code schreiben, um dies zu erreichen - es gibt eine nette Pastebin- Funktion, die den erforderlichen Code dafür bereitstellt.
Bearbeiten (19.12.2011):
Ja, hier erfahren Sie, wie Sie dies programmgesteuert tun können. Fügen Sie die folgenden zwei Funktionen zu Ihrer functions.php-Datei hinzu und Sie sollten einsatzbereit sein. Der Code wurde kommentiert, um zu erklären, was gerade passiert.
Sie müssen ...
Der Code wird ...
Beachten Sie, dass Sie den Code ändern müssen, um die YouTube-URL richtig zu finden, wenn Sie mehrere URLs in Ihren Beitrag aufnehmen. Dies können Sie tun, indem Sie die $attachments
Sammlung durchlaufen und herausfinden, welche URLs wie eine YouTube-URL aussehen.
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
Eine zu beachtende Sache ist, dass dies voraussetzt, dass Ihr Beitrag kein Post-Thumbnail hat und nicht ausgelöst wird, sobald ein Post-Thumbnail gesetzt ist.
Zweitens wird das neueste Bild verwendet, wenn Sie die Miniaturansicht des Beitrags entfernen und dann mit dem Medien-Uploader ein Bild an diesen Beitrag anhängen.
get_youtube_id
so benannt ist , dass 500 Server Fehler in Ihrer App verursachen, wenn Sie jetpack mit dem obigen Code verwenden. Wenn Sie diese Funktion umbenennen, funktioniert es a-ok