Wordpressはframeborder="0"
をiframeに追加するため、W3C Validatorはエラーを出力します。バリデータもallow属性を好きではありません。
私はVimeoのビデオのための同じような質問を見つけた: WordPressはW3Cの検証をenMed 。しかし、私はそれを機能させることができませんでした。
それは私がfunction.phpファイルに追加したコードですが、うまくいきません。
add_filter( 'oembed_dataparse', function( $return, $data, $url )
{
if( is_object( $data ) )
{
// Remove the unwanted attributes:
$return = str_ireplace(
array(
'frameborder="0"'
),
'',
$return
);
}
return $return;
}, 10, 3 );
それがソースコードの断片のようなものです。
<iframe width="500" height="281" src="https://www.youtube.com/embed/qUi422H0sx0?feature=oembed" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen>
そして誰もがallow
に関する2番目のエラーを知っていますか:それはちょうどフレームボーダーのように取り除かれることができますかそれのhtml5バージョンがありますか?
WordPressはframeborder属性を追加しません。 YouTubeはそうします。それは彼らの埋め込みコードの一部です。
絶対に削除する必要がある場合は、返されたHTMLを変更するためにembed_oembed_html
フィルタを使用できます。
function wpse_308247_remove_frameborder( $html, $url ) {
// If the URL to be embedded is from YouTube.
if ( strpos( $url, 'youtube.com' ) !== false ) {
// Replace the frameborder attribute with an empty string.
$html = str_replace( 'frameborder="0"', '', $html );
}
return $html;
}
add_filter( 'embed_oembed_html', 'wpse_308247_remove_frameborder', 10, 2 );
しかし、これが重要です。バリデータのエラーを回避するための特別な方法はありません。重要なのは、文脈なしにすべての警告やエラーを取り除こうとするのではなく、エラーとそれらが引き起こす可能性のある問題を理解することです。
そのことを念頭に置いて、frameborder
属性はおそらく古いバージョンのHTMLとの後方互換性のためにGoogleによって追加されたものであり、それが存在することによって悪影響が生じることはありません。それを削除する努力の価値があるとは思わない。
allow
属性は別の状況です。 Chrome特有の機能をサポートするためのようです。それは無効なHTMLですが、それでもまだ目的があります。 frameborder
属性に似ていますが、そこに残しても問題は発生しません。