web-dev-qa-db-ja.com

スタイルシートをエンキューするとき、type属性を削除することは可能ですか?

私は自分で作ったテーマをHTML 5に更新しましたが、すでにいくつかの変更を簡単に加えました。

私のテーマの唯一のスタイルシートは、次のようにwp_enqueue_styleファイルのfunctions.phpを介してページヘッドに追加されます。

function gridded_enqueue_styles() {
    wp_enqueue_style('style', get_template_directory_uri() . '/style.css', array(), null, 'all');
}
add_action('wp_enqueue_scripts', 'gridded_enqueue_styles');

結果のマークアップは次のとおりです。

<link rel='stylesheet' id='style-css'  href='http://grantpalin.com.dev:81/wp-content/themes/gridded/style.css' type='text/css' media='all' />

スタイルシートがロードされ、ページがレンダリングされました。ただし、HTML 5仕様では、typelink、およびstyleの各要素にはscript属性が不要になったことが示されています。

コーデックス参照 を見ると、type属性を変更または削除する方法がわかりません。これでもできますか?

明らかな回避策は、私のheader.phpにスタイルシート参照をハードコードすることですが、それはエンキュー機能の利点を避けています。

3
Grant Palin

この出力を修正するために、そのフィルタを使うことができます。

function wpse51581_hide_type($src) {
    return str_replace("type='text/css'", '', $src);
}
add_filter('style_loader_tag', 'wpse51581_hide_type');

このフックをwp-includes/class.wp-styles.phpに見ることができます

4
user15194
add_filter( 'style_loader_tag', 'html5_style_tag' );

function html5_style_tag( $tag ) {
    return preg_replace( '~\s+type=["\'][^"\']++["\']~i', '', $tag );
}
4
Geert