Como faço para incorporar vídeos do youtube com https em vez de http no URL?

8

Estou executando um site que se comunica apenas por SSL / https; portanto, se eu incorporar um vídeo do youtube usando http, receberei uma mensagem de erro informando que o site não é totalmente seguro. É possível reescrever algo para que o WordPress aceite https e ainda incorpore automaticamente links do youtube adicionados à área de conteúdo? Porque agora, quando tento incorporar um link https do youtube, tudo o que é mostrado é a URL, nenhum filme.

Atualizar

Eu tentei adicionar provedores usando esse código no functions.php, mas ele não faz 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
fonte
11
Ok, está no Wordpress Trac: core.trac.wordpress.org/ticket/18719
Richard B
Parece haver uma maneira de contornar isso, mas não sei exatamente como implementar esta solução no WordPress, gostaria de alguma ajuda: groups.google.com/group/youtube-api-gdata/browse_thread/thread/…
Richard B

Respostas:

5

http://core.trac.wordpress.org/ticket/18719 tem um patch de trabalho agora.

Edit: Código do plug-in para fazer semelhante até o patch chegar:

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 );
Otto
fonte
Sim, também comentei nesse bilhete trac. Obrigado!
Richard B
7

A solução da Otto não funciona no WP 3.6, presumivelmente porque os oembeds mudaram de núcleo e agora correspondem a https: //, para que os provedores adicionados nunca sejam correspondidos. Embora https: // corresponda no núcleo agora, ele sempre fornece uma http: // incorporada, mesmo que o URL original seja https: //, portanto, ainda temos o mesmo problema aqui.

Eu decidi apenas converter todos os oembeds relativos ao protocolo:

function my_embed_oembed_html( $html ) {
    return preg_replace( '@src="https?:@', 'src="', $html );
}
add_filter( 'embed_oembed_html', 'my_embed_oembed_html' );
Bradt
fonte
11
Procurando uma solução temporária para esse bug até que ele seja corrigido no núcleo, esse foi o único que funcionou. Obrigado! Nunca as wp_oembed_add_provider()variantes funcionaram, por exemplo.
Markus Amalthea Magnuson
É 2015, esse bug ainda não parece estar resolvido?
Bart
2

você pode hackear um retorno forçado de https no arquivo functions.php para procurar iframes com src começando com http e substituir https. [Parei o 'ser' desses URLs, já que alguns deles são youtu.be e 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);
troutacular
fonte
Obrigado - você também pode resumir alterar http: // para apenas // para seguir o esquema do site de hospedagem. Nota certo porque WP não faz isso por padrão (onde o anfitrião suporta ambos os protocolos)
Adam
1

O YouTube suporta https URLs para vídeos (basta adicionar os "s" ao URL normal). No entanto, eles também afirmam que:

No momento, apenas o código do player do YouTube pode ser acessado via HTTPS no momento. O fluxo de bits de vídeo real e algum conteúdo adicional carregado pelo player do YouTube ainda podem ser acessados ​​por meio de conexões HTTP padrão quando você usa um URL HTTPS no seu código de incorporação.

Parece que você ainda não poderá receber feeds de vídeo https. Isso parece ser confirmado pelo link trac que você postou: (Comentário 7 de Otto42) "Até que o YouTube retorne resultados https no iframe, a incorporação de um link desse tipo resultaria em uma página quebrada na maioria dos navegadores, pois o iframe não é SSL . "

Referência: http://apiblog.youtube.com/2011/02/https-support-for-youtube-embeds.html

Você também pode conferir esta solução: http://www.adammershon.com/display-youtube-videos-on-ssl-page/ (Isso essencialmente "veicula" o vídeo como se estivesse em sua página.)

(Não vejo nada de novo sobre o assunto.)

jfacemyer
fonte
Mas isso não significa que o iframe não possa ser https, de modo que pelo menos o código do jogador seja carregado dessa maneira. A página que você vincula diz que pode. nos meus testes, colocar um https src no iframe funciona bem em um site https, enquanto um http src não é exibido - mas mesmo se eu colocar um link https, o [embed] recebo um iframe com http.
Adam