web-dev-qa-db-ja.com

すべてのWordPressアセットをデキューする方法

デフォルトではフロントエンドにロードされているすべてのスタイルとスクリプト(管理パネルではなく)をデキューしたいです。

私はこの 関数 を見つけましたが、私の目標を達成するためにそれをどのように利用するかはわかりません。

私はフロントエンドで必要としない大量のアセットを目にしています。これはWP coreによってロードされます。

例えば:

  1. backbone.js
  2. jqueryのUI
  3. jquery UI日付ピッカー
  4. 5つの異なるメディアエレメントアセット(js + css)
  5. underscore.js
  6. wP埋め込みjs
  7. wp-util js
1
KJ Prince

私はあなたがそこに例を必要としていることがもっともっとよくわからないし、いくつかのスクリプトはadminバーのようなもののために必要であり、あなたがログインしていないならエンキューされないことを覚えておいてください。

function wpdocs_dequeue_script() {
   wp_dequeue_script( 'jquery-ui-core' );
}
add_action( 'wp_print_scripts', 'wpdocs_dequeue_script', 100 );

これはjquery-ui-core jsをデキューします。デキューしたいJSに 'wp_dequeue_script'をさらに追加すると、それらも削除されます。あなたは$ wp_scriptsのダンプを通してすべてのハンドルを見つけることができます。

<?php global $wp_scripts; var_dump($wp_scripts); ?>
1

フロントエンドの/ wp-admin /ディレクトリからカスタムの追加のアセットを読み込んでいないと仮定すると、これはあなたのためのトリックをするでしょう。

それは$ wp_scriptsと$ wp_stylesのグローバルを取り、登録されたリソースを繰り返し処理し、 '/ wp-admin /'を含まないソースディレクトリを持つリソースの登録を解除します。

function my_deregister_scripts_and_styles() {
    global $wp_scripts, $wp_styles;

    foreach($wp_scripts->registered as $registered)
        if(strpos($registered->src,'/wp-admin/')===FALSE)
            wp_deregister_script($registered->handle);

    foreach($wp_styles->registered as $registered)
        if(strpos($registered->src,'/wp-admin/')===FALSE)
            wp_deregister_style($registered->handle);
}
add_action( 'wp_enqueue_scripts', 'my_deregister_scripts_and_styles');
1