web-dev-qa-db-fra.com

Désactiver/désenregistrer tous les JS de tous les plugins

Comment puis-je désactiver tous les fichiers js des plugins et charger un seul fichier js que j'ai combiné et compressé?

Y a-t-il un moyen?

2
luckyrajiv

Semblable à la première réponse, mais cela devrait marcher

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

Vous pouvez installer un plug-in tel que asset Queue Manager pour garder une trace de toutes les feuilles de style actives et de tous les fichiers JavaScript cassé ou non), puis dans le fichier functions.php de votre thème, mettez un code comme celui-ci

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 );
  }
}

(bien sûr, vous voudrez peut-être remplacer le tableau $deregistered_scripts par ceux que vous n'utiliserez pas)

Si votre blog est en mode développement et que vous trouvez un message d'erreur après cela, un plug-in peut être à l'origine du problème. Essayez d'ajouter un @ à la ligne 250 de /wp-includes/class.wp-scripts.php (cela m'a permis de résoudre un avertissement d'erreur lancé par woocommerce).

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 : le code de désenregistrement de scripts a été ajouté à partir de cet article de blog de Justin Tadlock

1
Fran Cano

Vous pouvez essayer de faire quelque chose comme ça:

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
}

Mais faites attention que c’est une mauvaise habitude de faire ce que vous voulez faire et que cela pourrait conduire à des résultats inattendus à l’avenir.

0
Eugene Manuilov