Search code examples
phpwordpressdeferred

Defer parsing of JS adding to <link> tag


hi I have added this piece of code to my wp site

function defer_parsing_of_js ( $url ) {
    if ( FALSE === strpos( $url, '.js' ) ) return $url;
    if ( strpos( $url, 'jquery.js' ) ) return $url;
    return "$url' defer onload='";
}
add_filter( 'clean_url', 'defer_parsing_of_js', 11, 1 );

However it seems to be adding it to this link tag for some reason, not sure how to remove this from link tags ?

<link rel="stylesheet" id="bfa-font-awesome-css" href="//cdn.jsdelivr.net/fontawesome/4.7.0/css/font-awesome.min.css?ver=4.7.0" defer="" onload="" media="all">


Solution

  • Seemed to have found a solution:

    function js_defer_attr($tag){
        $scripts_to_exclude = array('.jsdelivr');
        foreach($scripts_to_exclude as $exclude_script){
            if(true == strpos($tag, $exclude_script ) )
            return $tag;
        }
    return str_replace( ' src', ' defer="defer" src', $tag );
    }
    add_filter( 'script_loader_tag', 'js_defer_attr', 10 );