web-dev-qa-db-fra.com

Lorsque vous utilisez une feuille de style, est-il possible de supprimer l'attribut type?

Je suis en train de mettre à jour mon thème créé par moi-même au format HTML5 et j'ai déjà effectué un certain nombre de modifications.

La seule feuille de style de mon thème est ajoutée à l'en-tête de page via wp_enqueue_style dans le fichier functions.php, comme suit:

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');

Le balisage résultant est:

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

La feuille de style est chargée, la page s'affiche, tout va bien. Cependant, la spécification HTML5 indique que l'attribut type n'est plus nécessaire pour les éléments link, style et script.

En examinant la référence du codex }, je ne vois pas comment modifier ou supprimer l'attribut type. Est-ce faisable?

La solution évidente consiste à coder en dur la référence à la feuille de style dans mon header.php, mais cela évite les avantages de la fonctionnalité de mise en file d'attente.

3
Grant Palin

Pour modifier cette sortie, vous pouvez utiliser ce filtre:

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

Vous pouvez voir ce crochet dans 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