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

8

Estoy ejecutando un sitio que solo se comunica a través de SSL / https, por lo que si inserto un video de YouTube usando http, recibiré un mensaje de error que dice que el sitio no es completamente seguro. ¿Es posible reescribir algo para que WordPress acepte https y siga incorporando automáticamente enlaces de YouTube agregados al área de contenido? Porque ahora, cuando intento incrustar un enlace de YouTube https, todo lo que se muestra es la URL, no la película.

Actualizar

Intenté 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);
Richard B
fuente
1
Ok, está en Wordpress Trac: core.trac.wordpress.org/ticket/18719
Richard B
Parece que hay una forma de evitarlo, pero no sé exactamente cómo implementar esta solución en WordPress, me gustaría recibir
Richard B

Respuestas:

5

http://core.trac.wordpress.org/ticket/18719 tiene un parche que funciona ahora.

Editar: el código del complemento debe ser similar hasta que el parche entre:

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 );
Otón
fuente
Sí, también he comentado en ese boleto de trác. ¡Gracias!
Richard B
7

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

He decidido convertir todos los protocolos relativos a oembeds:

function my_embed_oembed_html( $html ) {
    return preg_replace( '@src="https?:@', 'src="', $html );
}
add_filter( 'embed_oembed_html', 'my_embed_oembed_html' );
Bradt
fuente
1
Buscando alguna solución temporal para este error hasta que se solucione en el núcleo, esta fue la única que funciona. ¡Gracias! Nunca conseguí que las wp_oembed_add_provider()variantes funcionen, por ejemplo.
Markus Amalthea Magnuson el
Es 2015, este error aún no parece estar resuelto.
Bart
2

puede hackear un retorno https forzado en el archivo functions.php para buscar iframes que tengan un src que comience por http y reemplace https. [Dejé el 'ser' de estas URL ya que algunas de las URL compartidas son youtu.be y youtube.com]

//Embed Video Fix
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);
trovacular
fuente
Gracias: también puede cambiar http: // a // simplemente para seguir el esquema del sitio de alojamiento. Tenga en cuenta por qué WP no hace esto de manera predeterminada (donde el host admite ambos protocolos)
Adam
1

Youtube admite URL de https para videos (solo agregue la "s" en la URL normal). Sin embargo, también afirman que:

En particular, solo se puede acceder al código del reproductor de YouTube a través de HTTPS en este momento. El flujo de bits de video real y parte del contenido adicional cargado por el reproductor de YouTube aún se puede acceder a través de conexiones HTTP estándar cuando utiliza una URL HTTPS en su código de inserción.

Por lo tanto, parece que todavía no podrá obtener videos https. Esto parece ser confirmado por el enlace de seguimiento que publicó: (Comentario 7 de Otto42) "Hasta que YouTube devuelva resultados https en el iframe, incrustar dicho enlace solo daría como resultado 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 puede consultar esta solución: http://www.adammershon.com/display-youtube-videos-on-ssl-page/ (Esto esencialmente "serviría" el video como si estuviera en su página).

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

jfacemyer
fuente
Pero eso no significa que el iframe no puede ser https, por lo que al menos el código del reproductor se carga de esa manera. La página que enlaza dice que puede. en mis pruebas, poner un https src en el iframe funciona bien en un sitio https, mientras que un http src no se muestra, pero incluso si pongo un enlace https, el [embed] obtengo un iframe con http.
Adam