是否有过滤器removing style-tags 从<head></head>
wordpress中的区域?
我想删除此样式,例如:
<head>
<style>
@import url(\'https://fonts.googleapis.com/css?family=Chilanka&display=swap\');
</style>
</head>
我已经通过使用这个wordpress过滤器和一些正则表达式实现了删除链接标记:
add_filter( \'style_loader_tag\', \'removeGoogleLinks\');
我想我必须使用
wp_head 不知怎的,但我不知道如何使用这个过滤器?
add_filter( \'wp_head\', $removeGoogleFontStyle);
public function removeGoogleFontStyle($content){
//Filter googleapi styles with regex but
//how to use this funtion/filter?
}
最合适的回答,由SO网友:murcoder 整理而成
我的solution 立即全部删除<link></link>
标签和<style>@import url()</style>
给定HTML中的googleapi条目:
add_action( \'wp_footer\', \'SPDSGVOPublic::removeGoogleFonts\' );
/**
* Remove all occurrences of google fonts
*/
public static function removeGoogleFonts()
{
ob_start();
$content = ob_get_clean();
$patternImportUrl = \'/(@import[\\s]url\\((?:"|\\\')((?:https?:)?\\/\\/fonts\\.googleapis\\.com\\/css(?:(?!\\1).)+)(?:"|\\\')\\)\\;)/\';
$patternLinkTag = \'/<link(?:\\s+(?:(?!href\\s*=\\s*)[^>])+)?(?:\\s+href\\s*=\\s*([\\\'"])((?:https?:)?\\/\\/fonts\\.googleapis\\.com\\/css(?:(?!\\1).)+)\\1)(?:\\s+[^>]*)?>/\';
preg_match_all($patternImportUrl, $content, $matchesImportUrl);
preg_match_all($patternLinkTag, $content, $matchesLinkTag);
$matches = array_merge($matchesImportUrl,$matchesLinkTag);
foreach( $matches as $match ) {
$content = str_replace( $match, \'\', $content );
}
echo $content;
}