如何修改/扩展/覆盖核心方法?

时间:2013-09-05 作者:thierrymichel

这是我的第一篇帖子。提前,谢谢你欢迎我。。。

当您使用队列样式时,可以将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公司

1 个回复
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 );
}

结束

相关推荐

主题定制器不显示wp_head中的保存值(Css)

我一直在学习如何在主题中添加主题定制器功能。使用很少的代码和帮助来源,但最终选择了Codex。我使用的是抄本本身的一个片段,稍加修改以添加更多设置。我所做的唯一一件事就是添加了更多的颜色选项。我还使用Java脚本来显示实时更改。问题:调用设置保存的值并将新值添加到标题中的样式部分的函数不起作用:/似乎它不会使用“get\\u theme\\u mod”提取保存的值(甚至是默认值)有人能看看代码并给我指出正确的方向吗??这是我的功能。php文件。<?php class UnReady