web-dev-qa-db-ja.com

Iframe属性を変更するためのoembedsタグのフィルタリング

デフォルトでは、ポスト/ページの中に別のWP urlを入れると、それをオーバーエンディングして、フロントエンドにデフォルトを持つブロッククォートとiframeコードを生成します。

<iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted" ....></iframe>

また、JSコンソールXMLHttpRequest cannot load http://example.com/wp-content/themes/themename/js/test.js. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.でエラーが発生するため、一部のスクリプトの実行がブロックされていることを示唆しています。

フロントエンドで生成されたiframeを変更するために使用するのに最適なフィルタは何ですか。たとえば、sandboxallow-same-Origin属性にします。

<iframe class="wp-embedded-content" sandbox="allow-scripts allow-same-Origin" security="restricted" ....></iframe>
2
Carl Alberto

私はこのスニペットを使用してCORSの問題を解決することができました。これにより、このiFrameはallow-same-Originを実行できるようになり、このドメイン内でスクリプトを実行できます。

function oembed_iframe_overrides($html, $url, $attr) {

   if ( strpos( $html, "<iframe" ) !== false ) { 
      return str_replace('<iframe class="wp-embedded-content" sandbox="allow-scripts allow-same-Origin"', '<iframe class="wp-embedded-content" sandbox', $html); }
   else {
      return $html;
   }
} 
add_filter( 'embed_oembed_html', 'oembed_iframe_overrides', 10, 3);
1
Carl Alberto