¿Cómo incrusto videos de YouTube con https en lugar de http en la URL?
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);
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' );

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.

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 );

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);

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).

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.
