web-dev-qa-db-ja.com

クリーンアップスクリプトタグ

私はWordPressによって生成された<script>タグをきれいにしてHTML5のためのもっと意味のある出力を生成したいです。

<style>フィルタに添付されている次のコードを使用して、style_loader_tagタグに対してすでにこれを実行できます。

//clean up the default WordPress style tags
add_filter('style_loader_tag', 'clean_style_tag');

function clean_style_tag($input) {
    preg_match_all("!<link rel='stylesheet'\s?(id='[^']+')?\s+href='(.*)' type='text/css' media='(.*)' />!", $input, $matches);

    //only display media if it's print
    $media = $matches[3][0] === 'print' ? ' media="print"' : '';                                                                             
    return '<link rel="stylesheet" href="' . $matches[2][0] . '"' . $media . '>' . "\n";
}

しかし、コアに同等のscript_loader_tagはまだありません。これは過去に提案されたですが、今のところ回避策が必要です。

私は /wp-includes/class.wp-scripts.php の79行目のスクリプト出力(特にlines 117-120)を保持しているfunction do_item( $handle, $group = false )で調べ始めましたが、私はちょっと困ったここで使用できる適切なフィルタ.

2
Zach

あなたが本当にこれをしたいのなら、それはすでに可能なはずです。

global $wp_scriptsは、WP_Scriptsクラスのインスタンスで、インスタンスですWP_Dependenciesクラスの.

理論的には(テストされていませんが)、次のようなことができるはずです。

function alter_script_tags()
{
    echo '<pre>';
        print $GLOBALS['wp_scripts']->print_html;
    echo '</pre>';
}
add_action( 'wp_enqueue_scripts', 'alter_script_tags', 999999 );

これは単なるラフスケッチですが、考えを理解する必要があります。

1
kaiser

WPバージョンの互換性は不明ですが、 Soilプラグイン module clean-up.php から Roots になります。あなたのテーマのfunctions.phpなどで使用してください。

function clean_script_tag($input) {
  $input = str_replace("type='text/javascript' ", '', $input);
  return str_replace("'", '"', $input);
}
add_filter('script_loader_tag', 'clean_script_tag');
0
Marcel