私は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 にアクセスしようとしました。ドメイン、プロトコル、およびポートは一致している必要があります。
これを正しい方法で行う方法についての提案は、この時点では非常に役立ちます。
偽の埋め込みショートコードを作成してからrun_shortcodeを呼び出してこれを行うことは意味がありません。代わりにこれを試してください:
echo $wp_embed->shortcode(array(), $my_tour_video);
編集:さらに、その埋め込みを使用してテストページでコードを使用しても、説明したようなエラーは発生しません。再現可能なテストケースを思い付くことができればそれは解決可能かもしれません。
/ embed/URLを使用している場合は、それが原因である可能性があります。 YouTubeのビデオページを見ているときに表示されるので、代わりにビデオの実際のURLを使用してください。通常投稿のコンテンツに貼り付けるURLと同じです。