这是我的第一篇帖子。提前,谢谢你欢迎我。。。
当您使用队列样式时,可以将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]-->
这是由
do_item()
的方法
WP_Styles
类(class.wp\\u styles.php)。
我想用条件值添加一个“anticonditional”参数。。。
$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公司
SO网友:kaiser
已经有一个简单的答案了by toscho here. 基于此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 );
}