使用wp_enQueue_style()将‘title’属性添加到样式表

时间:2011-11-25 作者:Tom Auger

如果你想从我在core中留下的地方开始,请阅读下面的内容。但基本问题是:我需要在样式表中添加一个“title”属性,据我所知,wp\\u enqueue\\u style()不允许使用该参数。除了硬嵌入,WordPress还有什么方法允许我们将标题添加到样式表中?

在挖掘岩芯时,我注意到$title 可使用设置的变量$style->extra[\'title\'].

$title = isset($this->registered[$handle]->extra[\'title\']) ? "title=\'" . esc_attr( $this->registered[$handle]->extra[\'title\'] ) . "\'" : \'\';
(class.wp styles.php)

并且$title也会出现在您将样式表排入队列时应用的过滤器中。那么,如何在style对象中设置“extra”数组呢?

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

好的,这就是我的解决方案。

wp_enqueue_style( \'my-handle\', \'mystyle.css\' );
global $wp_styles;
$wp_styles->add_data( \'my-handle\', \'title\', \'my_stylesheet_title\' );
不喜欢使用全局。有更好的吗?

SO网友:Remzi Cavdar

在我看来,您也可以使用style\\u loader\\u标记,请参阅我的另一个答案,以了解对这两者的更详细了解style_loader_tagscript_loader_tag API:
How to add crossorigin and integrity to wp_register_style? (Font Awesome 5)

style\\u loader\\u标记是官方WordPress API,请参阅文档:https://developer.wordpress.org/reference/hooks/style_loader_tag/

apply_filters( \'style_loader_tag\', $html, $handle, $href, $media )
过滤排队样式的HTML链接标记。



First, enqueue your stylesheets

function add_styles() {
    // Example loading external stylesheet, could be used in both a theme and/or plugin
    wp_enqueue_style( \'font-awesome-5\', \'https://use.fontawesome.com/releases/v5.5.0/css/all.css\', array(), null );

    // Example theme
    wp_enqueue_style( \'font-awesome-5\', get_theme_file_uri( \'/assets/css/fontawesome.min.css\' ), array(), null );

    // Example plugin
    wp_enqueue_style( \'font-awesome-5\', plugins_url( \'/assets/css/fontawesome.min.css\', __FILE__ ), array(), null );
};
add_action( \'wp_enqueue_scripts\', \'add_styles\' );


Second, use style_loader_tag
然后使用style\\u loader\\u标记将标题添加到特定样式表中。

function add_stylesheet_attributes( $html, $handle ) {
    if ( \'font-awesome-5\' === $handle ) {
        return str_replace( "rel=\'stylesheet\'", "rel=\'stylesheet\' title=\'something\'", $html );
    }
    return $html;
}
add_filter( \'style_loader_tag\', \'add_stylesheet_attributes\', 10, 2 );

SO网友:Kevin Langley Jr.

看看你在后课时提到的文件。wp样式。php,您有以下行,$tag .= apply_filters( \'style_loader_tag\', "<link rel=\'$rel\' id=\'$handle-css\' $title href=\'$href\' type=\'text/css\' media=\'$media\' />\\n", $handle );. 因此,您可以挂接到“style\\u loader\\u标记”过滤器中,并添加到title标记中。我也喜欢你的答案,但我不确定哪一个更好,因为我不确定使用global是否有任何问题。

SO网友:testing

我用这种方式style_loader_tag. 因此,我误用了手柄来运输我的附加标题标签。如下所示:

// Enqueue style
wp_enqueue_style( \'twentytwelve-style-Xstyle1\', get_stylesheet_uri() );

// my filter function
add_filter(\'style_loader_tag\', \'my_style_loader_tag_function\');

function my_style_loader_tag_function($tag){
    $customXML = new SimpleXMLElement($tag);
    $id = (string)$customXML->attributes()->id;
    $values = explode(\'-X\',$id);
    if(!isset($values[1])){
        return $tag;
    }
    $customXML->attributes()->id = $values[0].\'-css\';
    $title = str_replace(\'-css\', \'\', $values[1]);
    $customXML->addAttribute(\'title\', $title);
    $dom = dom_import_simplexml($customXML);

    return $dom->ownerDocument->saveXML($dom->ownerDocument->documentElement);
}
所以我寻找-X 然后字符串就是我的title属性。

结束

相关推荐