web-dev-qa-db-fra.com

Comment supprimer tous les styles en même temps? Et pareil avec Javascript?

Comment obtenir tous les styles ou scripts en file d'attente puis les désenregistrer tous en même temps?

7
trusktr

J'espère que tu sais ce que tu fais. Vous pouvez utiliser les crochets wp_print_styles et wp_print_scripts action puis obtenir les variables globales $wp_styles et $wp_scripts / dans leurs crochets respectifs.

L'attribut "enregistré" répertorie les scripts enregistrés et l'attribut "file d'attente" les scripts en file d'attente sur les deux objets ci-dessus.

Un exemple de code pour vider les scripts et la file d'attente de styles.

function pm_remove_all_scripts() {
    global $wp_scripts;
    $wp_scripts->queue = array();
}
add_action('wp_print_scripts', 'pm_remove_all_scripts', 100);

function pm_remove_all_styles() {
    global $wp_styles;
    $wp_styles->queue = array();
}
add_action('wp_print_styles', 'pm_remove_all_styles', 100);
22
Hameedullah Khan

Vous pouvez également le faire au cas par cas en recherchant les gestionnaires appelés. Recherchez wp_enqueue_style ou wp_enqueue_script, vous pouvez les désenregistrer ainsi sur votre functions.php

add_action( 'wp_print_styles', 'my_deregister_styles', 100 );

function my_deregister_styles() {
    wp_deregister_style( 'some-css' );
}


add_action( 'wp_print_scripts', 'my_deregister_javascript', 100 );

function my_deregister_javascript() {
    wp_deregister_script( 'tutorials-js' );
    wp_deregister_script( 'gsc_dialog' );
    wp_deregister_script( 'gsc_jquery' );
}

La solution Hameedullah est préférable, cependant, si vous rencontrez des problèmes dus au non chargement de certains scripts, donnez-en un.

5
Graphics Designer

Bonjour, vous pouvez également supprimer tous ces scripts et Wordpress fonctionnera correctement. Puisque Wordpress vous permet de supprimer tout le script, vous ne pouvez pas supprimer ceux dont il a besoin. Le script audio et les autres sont des extras de script, cela ne causera donc aucun problème dans votre wordpress.

/**
 * Dequeue the Parent Theme scripts or plugin.
 *
 * Hooked to the wp_print_scripts action, with a late priority (100),
 * so that it is after the script was enqueued.
 */
function my_site_WI_dequeue_script() {
 wp_dequeue_script( 'comment-reply' ); //If you're using disqus, etc.
 wp_dequeue_script( 'jquery_ui' ); //jQuery UI, no thanks!
 wp_dequeue_script( 'fancybox' ); //Nah, I use FooBox
 wp_dequeue_script( 'wait_for_images' );
 wp_dequeue_script( 'jquery_easing' );
 wp_dequeue_script( 'swipe' );
 wp_dequeue_script( 'waypoints' );
}

add_action( 'wp_print_scripts', 'my_site_WI_dequeue_script', 99 );
0
Lenin Zapata

La méthode de Hameedullah est utile, cependant si vous voulez que cela fonctionne uniquement dans le début du site (par exemple: pas votre tableau de bord WordPress), vous devez ajouter une condition pour le forcer à renflouer de bonne heure.

J'utilise un chèque mentionné dans cette question avec is_admin() pour le faire.

function pm_remove_all_scripts(){
  if(in_array($GLOBALS['pagenow'], ['wp-login.php', 'wp-register.php']) || is_admin()) return; //Bail early if we're
  global $wp_scripts;
  $wp_scripts->queue = array();
}

add_action('wp_print_scripts', 'pm_remove_all_scripts', 100);

function pm_remove_all_styles(){
  if(in_array($GLOBALS['pagenow'], ['wp-login.php', 'wp-register.php']) || is_admin()) return; //Bail early if we're

  global $wp_styles;
  $wp_styles->queue = array();
}

add_action('wp_print_styles', 'pm_remove_all_styles', 100);
0
Alex Standiford