Ceci est mon premier message posté. D'avance, merci de m'accueillir ...
Lorsque vous mettez le style en file d'attente, vous pouvez exporter votre lien css en commentaires conditionnels.
global $wp_styles;
wp_enqueue_style("my_styles_ie");
$wp_styles->add_data("my_styles_ie", "conditional", "(lt IE 9) & (!IEMobile)");
Il produira le code suivant:
<!--[if (lt IE 9) & (!IEMobile)]>
<link rel="stylesheet" href="#" />
<![endif]-->
Ceci est effectué par la méthode do_item()
de la classe WP_Styles
(class.wp_styles.php).
J'aimerais ajouter un paramètre "anticonditionnel" avec la valeur de condition ...
$wp_styles->add_data("my_styles_ie", "anticonditional", "(gt IE 8) | (IEMobile)");
pour pouvoir sortir ceci ("commentaires imbriqués"):
<!--[if (gt IE 8) | (IEMobile)]><!-->
<link rel="stylesheet" href="#">
<!--<![endif]-->
J'ai cherché "comment modifier la méthode de base" mais je n'ai trouvé aucune solution ... :(
Pour l'instant, je peux le faire avec un crochet mais il n'y a pas de "arguments". La feuille de style et l'état sont codés en dur ...
function antiConditionnal($tag, $handle) {
if('my_styles' == $handle)
$tag = '<!--[if (gt IE 8) | (IEMobile)]><!-->' . "\n" . $tag . '<!--<![endif]-->' . "\n";
return $tag;
}
add_filter( 'style_loader_tag', 'antiConditionnal', 10, 2);
C'est principalement pour moi une opportunité d'améliorer mes connaissances et de plonger plus profondément dans WordPress!
Une idée?
Je vous remercie...
tm
Il existe déjà une réponse similaire de toscho ici . Sur la base de celui-ci et d'un coup d'œil à WP_Styles
, qui étend WP_Dependencies
et _WP_Dependency
, je ne vois pas pourquoi il ne fonctionnerait pas:
Tout ce qui a été ajouté en tant que extra
-conditional
est ajouté:
// ~/wp-includes/class.wp-styles.php
if ( isset($obj->extra['conditional']) && $obj->extra['conditional'] ) {
$tag .= "<!--[if {$obj->extra['conditional']}]>\n";
$end_cond = "<![endif]-->\n";
}
_WP_Dependency
définit add_data()
de la manière suivante:
function add_data( $name, $data ) {
if ( !is_scalar($name) )
return false;
$this->extra[$name] = $data;
return true;
}
et WP_Dependencies
définit add_data()
comme ceci:
function add_data( $handle, $key, $value ) {
if ( !isset( $this->registered[$handle] ) )
return false;
return $this->registered[$handle]->add_data( $key, $value );
}