使用ADD_FILTER来更改REL属性的更少的css enQueue_style

时间:2011-06-23 作者:cbaigorri

我想做的是使用less css 使用Wordpress。

你应该链接到你的。rel属性设置为“样式表/更少”的文件更少。但我不知道如何更改enqueue\\u风格输出的代码。

是否有方法应用过滤器并影响输出?

编辑:如果有人想知道我是如何完成这项工作的,下面是代码片段:

function enqueue_less_styles($tag, $handle) {
    global $wp_styles;
    $match_pattern = \'/\\.less$/U\';
    if ( preg_match( $match_pattern, $wp_styles->registered[$handle]->src ) ) {
        $handle = $wp_styles->registered[$handle]->handle;
        $media = $wp_styles->registered[$handle]->args;
        $href = $wp_styles->registered[$handle]->src . \'?ver=\' . $wp_styles->registered[$handle]->ver;
        $rel = isset($wp_styles->registered[$handle]->extra[\'alt\']) && $wp_styles->registered[$handle]->extra[\'alt\'] ? \'alternate stylesheet\' : \'stylesheet\';
        $title = isset($wp_styles->registered[$handle]->extra[\'title\']) ? "title=\'" . esc_attr( $wp_styles->registered[$handle]->extra[\'title\'] ) . "\'" : \'\';

        $tag = "<link rel=\'stylesheet\' id=\'$handle\' $title href=\'$href\' type=\'text/less\' media=\'$media\' />";
    }
    return $tag;
}
add_filter( \'style_loader_tag\', \'enqueue_less_styles\', 5, 2);

4 个回复
最合适的回答,由SO网友:Rarst 整理而成

是的,最终样式链接输出通过style_loader_tag 滤器

SO网友:flixos90

我创建了一个使用WP\\u dependencies类的query()方法的函数。此外,它不会重新生成输出,而只是重写必要的部分。

该函数访问全局$wp\\U styles对象,并执行查询以获取样式表对象。使用regex检查src是否包含。更少的文件,如果这是真的,则相应地修改rel属性。在我的函数中,我进一步将ID中的-css后缀替换为-less后缀,如果您不喜欢,只需删除这一行即可。

function allow_less_stylesheets( $style_tag, $handle )
{
    global $wp_styles;

    $obj = $wp_styles->query( $handle );
    if( $obj === false )
    {
        return $style_tag;
    }
    if( !preg_match( \'/\\.less$/U\', $obj->src ) )
    {
        return $style_tag;
    }

    // the current stylesheet is a LESS stylesheet, so make according changes
    $rel = isset( $obj->extra[\'alt\'] ) && $obj->extra[\'alt\'] ? \'alternate stylesheet\' : \'stylesheet\';
    $style_tag = str_replace( "rel=\'" . $rel . "\'", "rel=\'stylesheet/less\'", $style_tag );
    $style_tag = str_replace( "id=\'" . $handle . "-css\'", "id=\'" . $handle . "-less\'", $style_tag );
    return $style_tag;
}

SO网友:user32359

改变rel=stylesheetrel=stylesheet/less 在里面$tag 释义而且rel=alternate stylesheet/less, 不起作用。。

SO网友:drskullster

谢谢你的回答。直到我用echo代替return,它才对我起作用:

function enqueue_less_styles($tag, $handle) {
    global $wp_styles;
    $match_pattern = \'/\\.less$/U\';
    if ( preg_match( $match_pattern, $wp_styles->registered[$handle]->src ) ) {
        $handle = $wp_styles->registered[$handle]->handle;
        $media = $wp_styles->registered[$handle]->args;
        $href = $wp_styles->registered[$handle]->src . \'?ver=\' . $wp_styles->registered[$handle]->ver;
        $rel = isset($wp_styles->registered[$handle]->extra[\'alt\']) && $wp_styles->registered[$handle]->extra[\'alt\'] ? \'alternate stylesheet\' : \'stylesheet\';
        $title = isset($wp_styles->registered[$handle]->extra[\'title\']) ? "title=\'" . esc_attr( $wp_styles->registered[$handle]->extra[\'title\'] ) . "\'" : \'\';

        $tag = "<link rel=\'stylesheet\' id=\'$handle\' $title href=\'$href\' type=\'text/less\' media=\'$media\' />";
    }
    echo $tag;
}
add_filter( \'style_loader_tag\', \'enqueue_less_styles\', 5, 2);

结束

相关推荐

hooks & filters and variables

我是updating the codex page example for action hooks, 在游戏中完成一些可重用的功能(最初是针对这里的一些Q@WA)。但后来我遇到了一个以前没有意识到的问题:在挂接到一个函数以修改变量的输出后,我再也无法决定是要回显输出还是只返回它。The Problem: 我可以修改传递给do_action 用回调函数钩住。使用变量修改/添加的所有内容仅在回调函数中可用,但在do_action 在原始函数内部调用。很高兴:我将其修改为一个工作示例,因此您可以将其复制/粘贴