Remove style tags from head
Question
is there a filter for removing style-tags from the <head></head>
area in wordpress?
I want remove this style for instance:
<head>
<style>
@import url('https://fonts.googleapis.com/css?family=Chilanka&display=swap');
</style>
</head>
I already achieved to remove link-tags by using this wordpress filter and some regex:
add_filter( 'style_loader_tag', 'removeGoogleLinks');
I guess i havbe to use wp_head somehow but I'm not sure how to use this as filter?
add_filter( 'wp_head', $removeGoogleFontStyle);
public function removeGoogleFontStyle($content){
//Filter googleapi styles with regex but
//how to use this funtion/filter?
}
La solution
My solution removes now all <link></link>
tags and <style>@import url()</style>
googleapi entries in the given HTML:
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;
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à wordpress.stackexchange