No de forma nativa. Tendría que escribir un código para que esto suceda: hay una buena función de pastebin que proporciona el código necesario para hacerlo.
Editar (19/12/2011):
Sí, así es como puedes hacer esto mediante programación. Agregue las siguientes dos funciones a su archivo functions.php y debería estar listo. El código ha sido comentado para explicar lo que está sucediendo, pero aquí hay un alto nivel de lo que puede esperar:
Debes...
- Crea una publicación
- En el contenido, incluya una URL de YouTube
El código ...
- Analiza las URL fuera del contenido
- Tomará la primera URL que encuentre y asumirá que es una URL de YouTube
- Tome la miniatura del servidor remoto y descárguela
- Establecerlo como la miniatura de la publicación actual
Tenga en cuenta que si incluye varias URL en su publicación, deberá modificar el código para encontrar correctamente la URL de YouTube. Esto se puede hacer iterando a través de la $attachments
colección y olfateando qué URL se parece a una URL de YouTube.
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
Una cosa a tener en cuenta es que esto supone que su publicación no tiene una miniatura de publicación y no se activará una vez que se configure una miniatura de publicación.
En segundo lugar, si elimina la miniatura de la publicación y luego adjunta una imagen a esta publicación utilizando el cargador de medios, se utilizará la imagen más reciente.
get_youtube_id
modo que el servidor 500 error su aplicación si utiliza jetpack con el código anterior. Si cambia el nombre de esa función, funcionará bien