wp_enqueue_script でも defer が使えるようにする

WordPress の Tips。

wp_enqueue_script でも defer が使えるようにするには、clean_url で js が付くURLを書き換えちゃえば良い。
jQueryも非同期に読み込んじゃうと動かないので、そこだけフィルタリングしてる。

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

参考:How to add defer=“defer” tag in plugin javascripts?