web-dev-qa-db-fra.com

désinscrire des scripts sur certaines pages

j'ai besoin d'exclure certains scripts de l'exécution sur une certaine page. J'ai essayé ce code mais cela ne fonctionne pas - lorsque j'inspecte la page, les scripts sont toujours chargés dans le pied de page de ma page.

voici mon code dans functions.php

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

function my_deregister_javascript() {
   if ( !is_page('my-page') ) {
    wp_deregister_script( 'isotope' );
    wp_deregister_script( 'anystretch' );
    wp_deregister_script( 'imgliquid' );
    wp_deregister_script( 'retina' );
    wp_deregister_script( 'menutron' );
    wp_deregister_script( 'imagesloaded' );
    wp_deregister_script( 'myfunctions' );

     }
}

qu'est-ce que je rate? Merci!

3
roybatty

Vous avez une erreur de base dans votre code. Le code suivant

if ( !is_page('my-page') ) {

signifie que si vous êtes not sur cette page, deregister les scripts. Regardez les opérateurs php

! ->  Not !$x True if $x is not true

Aussi, pourquoi ne pas exclure cette page spécifique lors de la mise en file d'attente initiale de ces scripts, par exemple

add_action( 'wp_enqueue_scripts', 'my_register_javascript', 100 );

function my_register_javascript() {
   if ( !is_page('my-page') ) {

       // ENQUEUE/REGISTER SCRIPTS

     }
}

C'est beaucoup plus propre et plus efficace. Je ne vois pas l'intérêt d'enregistrer un script et de le désenregistrer à nouveau. Enregistrez plutôt les scripts conditionnellement depuis le début

8
Pieter Goosen

Finalement, SEULEMENT ma page de garde pour ne pas charger jQuery, je pensais que je la partagerais pour éventuellement sauver un autre bidouillage de 8 heures de hit and miss.

// remove jquery from ONLY the front page

add_action( 'wp_enqueue_scripts', 'my_deregister_javascript' );
function my_deregister_javascript() {
   if ( is_home('front-page') ) {
        wp_deregister_script( 'jquery' );
   }
}

REMARQUE: is_page de la question initiale ne fonctionne pas si vous souhaitez utiliser la page de couverture ou l'accueil dans l'argument doit utiliser is_home (cela m'a coûté une heure)

3
Mark

J'essaierais probablement de ne mettre en file d'attente ces scripts que sur des pages spécifiques, plutôt que de les mettre en file d'attente puis de les mettre en file d'attente:

function wpse158453_enqueue_scripts() {
    if(!is_page('my-page')) {
        wp_enqueue_script( 'jquery', '//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js' );
        wp_enqueue_script( 'jquery-ui', '//ajax.googleapis.com/ajax/libs/jqueryui/1.11.1/jquery-ui.min.js' );
        wp_enqueue_script( 'jquery-custom', get_template_directory_uri() . '/admin/js/custom.js' );
    }
}
add_action( 'wp_enqueue_scripts', 'wpse158453_enqueue_scripts' );

Sinon, vous pourriez essayer wp_dequeue_script plutôt que wp_deregister_script

J'espère que cela pourra aider.

2
Steve Dimock
//Remove jquery only on front page

add_action( 'wp_enqueue_scripts', 'my_deregister_javascript' );

function my_deregister_javascript() {
  if ( is_front_page() ) {
    wp_deregister_script( 'jquery' );
 }
}

ajouter ce script dans votre thème function.php fichier que vous allez résoudre requête

0
Viral M