web-dev-qa-db-ja.com

すべてのプラグインからすべてのJSを無効/登録解除する

どのように私はプラグインからすべてのJSファイルを無効にし、私が結合し、圧縮した単一のJSファイルをロードすることができますか?

方法はありますか?

2
luckyrajiv

最初の答えと似ていますが、これでうまくいくはずです。

function remove_all_scripts() {
   foreach( wp_scripts()->registered as $script ) {
      wp_dequeue_script( $script );
      wp_deregister_script( $script );
  }
} 
add_action('wp_enqueue_scripts', 'remove_all_scripts', PHP_INT_MAX);
1
Bryan Willis

asset Queue Manager のようなプラグインをインストールして、アクティブなすべてのスタイルシートとJavaScriptファイルを追跡することができます(整形式です。アセットがなくてもページがどのように見えるかをライブプレビューできます)。壊れたかどうか)、そしてあなたのテーマのfunctions.phpファイルに次のようなコードを入れてください。

add_action( 'wp_print_scripts', 'my_deregister_javascript', 100 );
function my_deregister_javascript() {
  $deregistered_scripts=array('wc-add-to-cart',
    'woocommerce',
    'storefront-skip-link-focus-fix',
    'wc-add-to-cart-variation',
    'wc-cart-fragments',
    'storefront-navigation',
    'wc-single-product');
  foreach ($deregistered_scripts as $key => $script) {
    wp_deregister_script( $script );
  }
}

(もちろん、$deregistered_scripts配列を、使用しないものだけに置き換えたいと思うかもしれません)

ブログが開発モードになっていて、その後にエラーメッセージが表示される場合は、プラグインによって問題が発生している可能性があります。 /wp-includes/class.wp-scripts.phpの250行目に@を追加してみてください。

public function set_group( $handle, $recursion, $group = false ) {
        if ( @$this->registered[$handle]->args === 1 ) //"@" added
            $grp = 1;
        else
            $grp = (int) $this->get_data( $handle, 'group' );

        if ( false !== $group && $grp > $group )
            $grp = $group;

        return parent::set_group( $handle, $recursion, $grp );
    }

Edit:登録解除スクリプトのコードは、Justin Tadlockによる このブログ記事から追加されました

1
Fran Cano

あなたはこのようなことをやろうとすることができます:

add_action( 'wp_enqueue_scripts', 'wpse8170_disable_all_scripts', 9999 );
function wpse8170_disable_all_scripts() {
    global $wp_scripts, $wp_styles;

    $wp_styles = new WP_Styles(); // reset all styles
    $wp_scripts = new WP_Scripts(); // reset all scripts
}

しかし、これはあなたがやりたいことをするための悪い習慣であり、将来的に 予期しない 結果につながる可能性があることに注意してください。

0
Eugene Manuilov