これが私の最初の投稿です。どうぞよろしくお願いいたします。
スタイルをエンキューするときに、CSSリンクを条件付きコメントに出力できます。
global $wp_styles;
wp_enqueue_style("my_styles_ie");
$wp_styles->add_data("my_styles_ie", "conditional", "(lt IE 9) & (!IEMobile)");
次のようなコードが生成されます。
<!--[if (lt IE 9) & (!IEMobile)]>
<link rel="stylesheet" href="#" />
<![endif]-->
これはWP_Styles
クラスのdo_item()
メソッド(class.wp_styles.php)によって行われます。
条件値に "anticonditionnal"パラメータを追加したいのですが….
$wp_styles->add_data("my_styles_ie", "anticonditional", "(gt IE 8) | (IEMobile)");
これを出力できるようにするには( "ネストしたコメント"):
<!--[if (gt IE 8) | (IEMobile)]><!-->
<link rel="stylesheet" href="#">
<!--<![endif]-->
「コアメソッドの変更方法」について検索しましたが、解決策が見つかりませんでした... :(
今のところ、フックでそれを行うことができますが、「引数」はありません。スタイルシートと条件はハードコーディングされています...
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);
これは主に私のために私の知識を向上させ、WordPressに深く飛び込む機会です!
何か案が?
ありがとうございました...
tM
Toschoによる類似の答え がすでにあります 。これに基づいて、そしてWP_Styles
とWP_Dependencies
を拡張する_WP_Dependency
を見ると、それがうまくいかない理由はわかりません。
extra
-conditional
として追加されたものは何でも、スローされます:
// ~/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
はadd_data()
を次のように定義します。
function add_data( $name, $data ) {
if ( !is_scalar($name) )
return false;
$this->extra[$name] = $data;
return true;
}
そしてWP_Dependencies
はadd_data()
を次のように定義します。
function add_data( $handle, $key, $value ) {
if ( !isset( $this->registered[$handle] ) )
return false;
return $this->registered[$handle]->add_data( $key, $value );
}