¿Cómo incrusto videos de YouTube con https en lugar de http en la URL?

31 ene 2012, 12:48:06
Vistas: 20.3K
Votos: 8

Estoy ejecutando un sitio que solo se comunica a través de SSL/https, por lo que si incrusto un video de YouTube usando http recibiré un mensaje de error diciendo que el sitio no es completamente seguro. ¿Es posible reescribir algo para que WordPress acepte https y aún así auto-incruste los enlaces de YouTube añadidos al área de contenido? Porque ahora, cuando intento incrustar un enlace de YouTube con https, todo lo que se muestra es la URL, sin el video.

Actualización

He intentado agregar proveedores usando este código en functions.php pero no hace nada:

wp_oembed_add_provider('https://youtu.be/*', 'https://youtube.com/oembed' );
wp_oembed_add_provider('#https://(www\.)?youtube.com/watch.*#i', 'https://youtube.com/oembed', true);
wp_oembed_add_provider('http://youtu.be/*', 'https://youtube.com/oembed' );
wp_oembed_add_provider('#http://(www\.)?youtube.com/watch.*#i', 'https://youtube.com/oembed', true);
2
Comentarios

Ok, está en el Wordpress Trac: http://core.trac.wordpress.org/ticket/18719

Richard B Richard B
1 feb 2012 12:01:20

Parece que hay una solución pero no sé exactamente cómo implementarla en WordPress, me gustaría algo de ayuda: http://groups.google.com/group/youtube-api-gdata/browse_thread/thread/4bd15af99c3631af/b5876ac42863cc06?lnk=gst&q=oembed+https#b5876ac42863cc06

Richard B Richard B
1 feb 2012 15:21:02
Todas las respuestas a la pregunta 4
2

La solución de Otto no funciona en WP 3.6, presumiblemente porque los oembeds han cambiado en el núcleo y ahora sí coinciden con https://, por lo que los proveedores añadidos nunca coinciden. Aunque https:// coincide en el núcleo ahora, siempre proporciona un embed http:// incluso si la URL original es https://, así que todavía tenemos el mismo problema aquí.

He decidido simplemente convertir todos los oembeds relativos al protocolo:

function my_embed_oembed_html( $html ) {
    return preg_replace( '@src="https?:@', 'src="', $html );
}
add_filter( 'embed_oembed_html', 'my_embed_oembed_html' );
9 sept 2013 23:08:50
Comentarios

Buscando alguna solución temporal para este error hasta que se solucione en el núcleo, esta fue la única que funcionó. ¡Gracias! Nunca logré que funcionaran las variantes de wp_oembed_add_provider(), por ejemplo.

Markus Amalthea Magnuson Markus Amalthea Magnuson
13 sept 2013 21:56:31

Es 2015, ¿este error aún no parece estar resuelto??

bart bart
21 sept 2015 06:16:10
1

http://core.trac.wordpress.org/ticket/18719 ya tiene un parche funcional.

Edición: Código del plugin para hacer algo similar hasta que se incluya el parche:

wp_oembed_add_provider('#https://(www\.)?youtube.com/watch.*#i', 'http://youtube.com/oembed?scheme=https', true);
wp_oembed_add_provider('https://youtu.be/*', 'http://youtube.com/oembed?scheme=https', false );
2 feb 2012 20:48:45
Comentarios

Sí, también he comentado en ese ticket de trac. ¡Gracias!

Richard B Richard B
6 feb 2012 22:07:11
1

Podrías forzar el retorno HTTPS en el archivo functions.php para buscar iframes que tengan un src comenzando con HTTP y reemplazarlo por HTTPS. [Omití el 'be' de estas URLs ya que algunas URLs compartidas son youtu.be y youtube.com]

//Corrección de Embed de Video
function add_secure_video_options($html) {
   if (strpos($html, "<iframe" ) !== false) {
        $search = array('src="http://www.youtu','src="http://youtu');
        $replace = array('src="https://www.youtu','src="https://youtu');
        $html = str_replace($search, $replace, $html);

        return $html;
   } else {
        return $html;
   }
}
add_filter('the_content', 'add_secure_video_options', 10);
23 oct 2013 22:28:27
Comentarios

Gracias - también podrías simplemente cambiar http:// por solo // para seguir el esquema del sitio de hosting. No estoy seguro de por qué WP no hace esto por defecto (donde el host soporta ambos protocolos)

Adam Adam
15 jun 2014 23:26:42
1

YouTube admite URLs HTTPS para videos (solo agrega la "s" en la URL regular). Sin embargo, también indican que:

En particular, solo el código del reproductor de YouTube es accesible mediante HTTPS en este momento. El flujo de bits real del video y algún contenido adicional cargado por el reproductor de YouTube aún pueden accederse mediante conexiones HTTP estándar cuando utilizas una URL HTTPS en tu código de inserción.

Así que parece que aún no podrás obtener transmisiones de video en HTTPS. Esto parece confirmarse por el enlace de trac que compartiste: (Comentario 7 de Otto42) "Hasta que YouTube devuelva resultados HTTPS en el iframe, insertar dicho enlace solo resultaría en una página rota en la mayoría de los navegadores, ya que el iframe no es SSL."

Referencia: http://apiblog.youtube.com/2011/02/https-support-for-youtube-embeds.html

También puedes revisar esta solución: http://www.adammershon.com/display-youtube-videos-on-ssl-page/ (Esto esencialmente "serviría" el video como si estuviera en tu página).

(No veo nada más reciente sobre el tema).

2 feb 2012 18:50:45
Comentarios

Pero eso no significa que el iframe no pueda ser https para que al menos el código del reproductor se cargue de esa manera. La página que enlazas dice que es posible. En mis pruebas, al poner una fuente https en el iframe funciona bien en un sitio https, mientras que una fuente http no se muestra. Pero incluso si pongo un enlace https en el [embed], obtengo un iframe con http.

Adam Adam
15 jun 2014 23:29:05