Extraer el ID de los videos de youtube
octubre 05, 11 by Gerald | Puesto en Programación, Wordpress
Últimamente vengo trabajando con WordPress todos los días para proyectos de varios clientes en la empresa donde trabajo. Había una categoría llamada “Vídeos” y en ella tenía varias entradas con vídeos de youtube los cuales yo quería extraer el ID de cada vídeo y mostrarlo como miniatura de cada entrada.
El reto era extraer el ID y pintar su miniatura. Copia el siguiente código y pegalo en functions.php
function get_youtube_videos() {
global $post;
$string = $post->post_content;
$ids = array();
//buscamos todas las urls
//http://forums.digitalpoint.com/showthread.php?t=216299
preg_match_all('/(http|https)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/', $string, $links);
foreach ($links[0] as $link)
{
//http://stackoverflow.com/questions/2936467/parse-youtube-video-id-using-preg-match
if (preg_match('%(?:youtube\.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^"&?/ ]{11})%i', $link, $match))
{
$ids[] = $match[1];
}
}
return $ids[0];
}
Youtube por defecto crea por cada video que subas 4 thumbnails (4 imágenes) para extraerla tan solo necesitas cambiar la siguiente url:
http://img.youtube.com/vi/video/default.jpg
http://img.youtube.com/vi/video/1.jpg
http://img.youtube.com/vi/video/2.jpg
http://img.youtube.com/vi/video/3.jpg
Vamos a usar este video como ejemplo:
su id sería entonces sU-getS3nJ8
y por lo tanto su imagen sería:
http://img.youtube.com/vi/sU-getS3nJ8/default.jpg
Luego para mostrarlo invoco un query personalizado
$my_query = new WP_Query('category_name=Videos&posts_per_page=1');
while ( $my_query->have_posts() ) : $my_query->the_post(); setup_postdata($post);
?>
<a class="miniatura" title="<?php the_title_attribute(); ?>" href="<?php the_permalink() ?>" rel="bookmark"><img src="http://img.youtube.com/vi/<?php echo get_youtube_videos(); ?>/default.jpg" alt="" /></a>
<?php endwhile; ?>
Esta función puede ser usada también en cualquier sitio, no necesariamente se debe estar usando wordpress para sacar provecho de esta maravilla de función que de seguro te servirá.
Saludos
[Fuentes revisadas: Digital Point | Stackoverflow]