Remove style tags from head

时间:2019-09-08 作者:murcoder

是否有过滤器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?
} 

1 个回复
最合适的回答,由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;
    }

相关推荐

apply_filters to $GLOBALS

我正在使用Pootle页面构建插件构建一个单页网站。使用get\\u page,我在1页上显示每个单独的页面。为了针对Pootle页面生成器内容,我使用以下代码:$content = $GLOBALS[\'Pootle_Page_Builder_Render_Layout\']->panels_render( $page_data->ID ); 当我尝试实现一个像旋转木马这样的插件时,我需要使用一个短代码,但短代码不起作用。为了使短代码有效,我需要使用apply_filters(\'