我在wordpress项目中使用了一个插件,因为他们使用style_loader_tag
过滤器来格式化样式表标签,通过使用此过滤器,他们删除了样式表ID,如下所示:
<link rel="stylesheet" href="http://hoaa.local/wp-includes/css/dashicons.min.css">
不使用此过滤器,则应为:
<link rel='stylesheet' id='admin-bar-css' href='http://hoaa.local/wp-includes/css/admin-bar.min.css' media='all' />
他们使用了类似的方法。
add_filter( 'style_loader_tag', function($input) {
preg_match_all( "!<link rel='stylesheet'\s?(id='[^']+')?\s+href='(.*)' type='text/css' media='(.*)' />!", $input, $matches );
if ( empty( $matches[2] ) ) {
return $input;
}
$media = $matches[3][0] !== '' && $matches[3][0] !== 'all' ? ' media="' . $matches[3][0] . '"' : '';
return '<link rel="stylesheet" href="' . $matches[2][0] . '"' . $media . '>' . "\n";
} );
有没有办法我可以覆盖此清理。当我在孩子主题中使用以下内容时:
add_filter( 'style_loader_tag', function($input) {
var_dump($input);
return $input;
}, 9999, 1 );
我得到了样式表的过滤出版本,也就是说,我无法覆盖由插件触发的过滤器。