deregistrare script su determinate pagine

19 ago 2014, 21:52:39
Visualizzazioni: 16.5K
Voti: 4

Devo escludere alcuni script dal caricamento su una determinata pagina. Ho provato questo codice ma non funziona - quando ispeziono la pagina gli script vengono ancora caricati nel footer.

Ecco il mio codice nel file functions.php

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

function my_deregister_javascript() {
   if ( !is_page('mia-pagina') ) {
    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' );

     }
}

Cosa mi manca? Grazie!

1
Commenti

Puoi provare a cambiare la priorità da 100 a quella predefinita che è 10. Prova semplicemente add_action( 'wp_enqueue_scripts', 'my_deregister_javascript' );

Maruti Mohanty Maruti Mohanty
19 ago 2014 22:50:51
Tutte le risposte alla domanda 4
0

Hai un errore di base nel tuo codice. Il seguente codice

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

significa che se non sei su quella pagina, deregistri gli script. Dai un'occhiata agli operatori php

! ->  Not !$x Vero se $x non è vero

Inoltre, perché non escludere questa pagina specifica quando registri inizialmente questi script, qualcosa come

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

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

       // REGISTRA/ACCODA GLI SCRIPT

     }
}

È molto più pulito ed efficiente. Non vedo il motivo di registrare uno script e poi deregistrarlo nuovamente. Piuttosto registra gli script condizionalmente fin dall'inizio

20 ago 2014 07:33:51
0

Finalmente sono riuscito a fare in modo che SOLO la mia pagina iniziale non carichi jQuery, ho pensato di condividerlo per risparmiare potenzialmente ad altri smanettoni 8 ore di tentativi ed errori.

// rimuove jQuery SOLO dalla pagina iniziale

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

NOTA: is_page dalla domanda iniziale non funziona quando si vuole usare front-page o home nell'argomento, bisogna usare is_home (questo mi è costato un'ora)

29 gen 2017 20:50:49
1

Probabilmente proverei a caricare quegli script solo su pagine specifiche, invece di caricarli e poi rimuoverli:

function wpse158453_enqueue_scripts() {
    if(!is_page('mia-pagina')) {
        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' );

In alternativa potresti provare wp_dequeue_script invece di wp_deregister_script

Spero che sia d'aiuto.

19 ago 2014 23:09:37
Commenti

Ho aggiunto l'operatore ! al codice per allinearmi alla domanda originale. Ho votato positivamente la risposta. Se qualcuno ha obiezioni, sentitevi liberi di annullare la mia modifica :-)

Pieter Goosen Pieter Goosen
20 ago 2014 08:08:07
1
// Rimuove jQuery solo nella pagina frontale

add_action( 'wp_enqueue_scripts', 'my_deregister_javascript' );

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

Aggiungi questo script nel file function.php del tuo tema per risolvere il problema con jQuery

21 giu 2017 08:56:50
Commenti

le risposte con solo codice non sono buone. Per favore, aggiungi una spiegazione su ciò che il codice fa in modo che qualsiasi utente possa comprenderlo,

cybmeta cybmeta
21 giu 2017 09:47:48