URLにhttpではなくhttpsを使用してYouTubeビデオを埋め込むにはどうすればよいですか?


8

SSL / httpsでのみ通信するサイトを実行しているため、httpを使用してYouTube動画を埋め込むと、サイトが完全に安全ではないというエラーメッセージが表示されます。WordPressがhttpsを受け入れ、コンテンツ領域に追加されたYouTubeリンクを自動的に埋め込むように何かを書き換えることはできますか?原因は、httpsのyoutubeリンクを埋め込もうとすると、表示されるのはURLだけで、映画ではないということです。

更新

functions.phpでこのコードを使用してプロバイダーを追加しようとしましたが、何もしません:

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

1
OK、それはWordpress Tracにあります:core.trac.wordpress.org/ticket/18719
Richard B

そこを回避する方法のようですが、私はワードプレスで、このソリューションを実装する方法を正確に知っていない、いくつかの助けをしたいと思います:groups.google.com/group/youtube-api-gdata/browse_thread/thread/...
リチャード・Bは、

回答:


5

http://core.trac.wordpress.org/ticket/18719には現在有効なパッチがあります。

編集:パッチが入るまで同様のプラグインコード:

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

はい、そのTracチケットにもコメントしました。ありがとう!
リチャードB

7

OttoのソリューションはWP 3.6では機能しません。おそらくoembedがコアで変更され、現在はhttps://に一致しているため、追加されたプロバイダーが一致しないためです。現在、https://はコアで一致していますが、元のURLがhttps://であっても常にhttp://埋め込みを提供するため、ここでも同じ問題が発生します。

すべてのoembedsプロトコル相対を変換することにしました。

function my_embed_oembed_html( $html ) {
    return preg_replace( '@src="https?:@', 'src="', $html );
}
add_filter( 'embed_oembed_html', 'my_embed_oembed_html' );

1
コアで修正されるまで、このバグの一時的な解決策を探していましたが、これが唯一の有効な解決策でした。ありがとう!wp_oembed_add_provider()たとえば、バリアントを機能させることはありません。
Markus Amalthea Magnuson 2013

2015年ですが、このバグはまだ解決されていないようです。
Bart

2

functions.phpファイルで強制httpsリターンをハッキングして、srcがhttpで始まるiframeを検索し、httpsを置き換えることができます。[共有URLの一部がyoutu.beとyoutube.comであるため、これらのURLの「be」を省略しました]

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

ありがとう-ホスティングサイトのスキーマに従うために、http://を//に変更することもできます。WPがデフォルトでこれを行わない理由(ホストが両方のプロトコルをサポートしている場合)
Adam

1

Youtubeは動画のhttps URLをサポートしています(通常のURLに「s」を追加するだけです)。ただし、次のようにも述べられています。

特に、現時点では、HTTPS経由でアクセスできるのはYouTubeプレーヤーコードのみです。埋め込みコードでHTTPS URLを使用する場合、実際のビデオビットストリーム、およびYouTubeプレーヤーによってロードされたいくつかの追加コンテンツは、標準のHTTP接続を介して引き続きアクセスできます。

そのため、まだhttps動画フィードを取得できないようです。これは、あなたが投稿したtracリンクによって確認されているようです:(コメント7 by Otto42) 」

リファレンス:http : //apiblog.youtube.com/2011/02/https-support-for-youtube-embeds.html

:あなたはまた、このソリューションをチェックアウトかもしれないhttp://www.adammershon.com/display-youtube-videos-on-ssl-page/を(それはあなたのページにあったかのようにこれは基本的にビデオを「奉仕」でしょう。)

(この件について、これ以上新しいことはありません。)


ただし、これはiframeをhttpsにできないため、少なくともプレーヤーコードがそのように読み込まれることを意味するわけではありません。あなたがリンクするページはそれができると言います。テストでは、https srcをiframeに配置するとhttpsサイトで正常に機能しますが、http srcは表示されません。
アダム
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.