web-dev-qa-db-ja.com

テンプレート機能を介してYouTubeビデオを埋め込むと、iframeクロスメインポリシーエラーが発生する

私はWordpress 3.5を使用しています。これはYouTubeを含む多くのサイトからの投稿やページへの埋め込みをネイティブにサポートしています。

YouTubeの動画を投稿やページに直接埋め込む(動画のURLをコピーして貼り付ける)と、うまく動作し、ChromeやFirefoxではクロスドメインポリシーエラーが発生しません。

ただし、カスタム投稿テンプレート用に作成したカスタムページテンプレート内(メインループ外)の関数からURLを追加すると、エラーが発生します。

これが私の関数の外観です。

function my_tour_video()
{
    global $post,
           $wp_embed; 

    $my_tour_video = get_post_meta($post->ID, "_my_tour_video", true);  
    echo $wp_embed->run_shortcode('[embed]' . $my_tour_video . '[/embed]');
}

私のカスタムフィールドで、私は "埋め込み"のYouTubeのURLと、ブラウザからコピーして貼り付けた "watch"のURLを試してみました。

あなたはこのサンプルURLを試すことができます: http://www.youtube.com/embed/Y7AvqD2loX4

Chromeでのエラーは以下のようになります。

安全でないJavaScriptがURL http://www.mydomain.com にあるフレームからURL http://www.youtube.com/embed/Y7AvqD2loX4 にアクセスしようとしました。ドメイン、プロトコル、およびポートは一致している必要があります。

これを正しい方法で行う方法についての提案は、この時点では非常に役立ちます。

1
IntricatePixels

偽の埋め込みショートコードを作成してからrun_shortcodeを呼び出してこれを行うことは意味がありません。代わりにこれを試してください:

echo $wp_embed->shortcode(array(), $my_tour_video);

編集:さらに、その埋め込みを使用してテストページでコードを使用しても、説明したようなエラーは発生しません。再現可能なテストケースを思い付くことができればそれは解決可能かもしれません。

/ embed/URLを使用している場合は、それが原因である可能性があります。 YouTubeのビデオページを見ているときに表示されるので、代わりにビデオの実際のURLを使用してください。通常投稿のコンテンツに貼り付けるURLと同じです。

3
Otto