web-dev-qa-db-ja.com

URLにhttpではなくhttpsを使用してYouTube動画を埋め込むにはどうすればよいですか。

私は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);
8
Richard B

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

OttoのソリューションはWP 3.6では機能しません。これはおそらく、組み込みがコアで変更され、現在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' );
7
bradt

httpで始まるsrcを持つiframeを検索してhttpsを置き換えるために、functions.phpファイルに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);
2
troutacular

YouTubeはビデオ用のhttps URLをサポートしています(通常のURLに "s"を追加するだけです)。しかし、彼らはまた次のように述べています。

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

そのため、httpsビデオフィードをまだ取得できないようです。これはあなたが投稿したTracのリンクで確認されるようです:(Otto42によるComment 7) "YouTubeがhttpsの結果をiframeに返すまで、ほとんどのブラウザではそのようなリンクを埋め込むとページが壊れてしまうでしょう"

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

あなたはまた、この解決策をチェックアウトするかもしれません: http://www.adammershon.com/display-youtube-videos-on-ssl-page/ (これは本質的にあなたのページにあったかのようにビデオを "提供する"でしょう。)

(私はこの件に関してもっと新しいことは見ない。)

1
jfacemyer