Cum să dezînregistrezi scripturi pe anumite pagini în WordPress

19 aug. 2014, 21:52:39
Vizualizări: 16.5K
Voturi: 4

Am nevoie să exclud anumite scripturi de pe o anumită pagină. Am încercat acest cod dar nu funcționează - când inspectez pagina, scripturile sunt încă încărcate în footer.

Iată codul meu din 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' );

     }
}

Ce am omis? Mulțumesc!

1
Comentarii

Poți încerca să schimbi prioritatea de la 100 la valoarea implicită, care este 10. Încearcă add_action( 'wp_enqueue_scripts', 'my_deregister_javascript' );

Maruti Mohanty Maruti Mohanty
19 aug. 2014 22:50:51
Toate răspunsurile la întrebare 4
0

Ai o greșeală de bază în codul tău. Următorul cod

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

înseamnă că dacă nu te afli pe acea pagină, dezînregistrezi scripturile. Aruncă o privire la operatorii php

! ->  Negare !$x Adevărat dacă $x nu este adevărat

De asemenea, de ce să nu excludeți această pagină specifică când înregistrați inițial aceste scripturi, cum ar fi

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

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

       // ÎNCARCĂ/ÎNREGISTREAZĂ SCRIPTURI

     }
}

Este mult mai curat și mai eficient. Nu văd rostul în a înregistra un script și apoi să-l dezînregistrezi din nou. Mai bine înregistrează scripturile condiționat de la început

20 aug. 2014 07:33:51
0

În sfârșit am reușit să fac ca DOAR pagina mea principală să nu încarce jQuery, am vrut să împărtășesc acest lucru pentru a putea salva și altor dezvoltatori 8 ore de încercări și erori.

// elimină jQuery DOAR de pe pagina principală

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

NOTĂ: is_page din întrebarea inițială nu funcționează când doriți să folosiți front-page sau home ca argument, trebuie să folosiți is_home (asta mi-a luat o oră)

29 ian. 2017 20:50:49
1

Probabil aș încerca să încarc acele scripturi doar pe anumite pagini, mai degrabă decât să le încarc și apoi să le elimin:

function wpse158453_enqueue_scripts() {
    if(!is_page('pagina-mea')) { // Verifică dacă nu este pagina specificată
        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' ); // Adaugă acțiunea pentru încărcarea scripturilor

Altfel, ai putea încerca wp_dequeue_script în loc de wp_deregister_script

Sper că acest lucru te ajută.

19 aug. 2014 23:09:37
Comentarii

Am adăugat operatorul ! în cod pentru a se alinia cu OP. Am dat un vot pozitiv răspunsului. Dacă cineva are obiecții, nu ezitați să reveniți la versiunea mea anterioară :-)

Pieter Goosen Pieter Goosen
20 aug. 2014 08:08:07
1
// Elimină jQuery doar pe pagina principală

add_action( 'wp_enqueue_scripts', 'my_deregister_javascript' );

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

Adaugă acest script în fișierul functions.php al temei tale pentru a rezolva problema cu jQuery

21 iun. 2017 08:56:50
Comentarii

răspunsurile doar cu cod nu sunt bune. Te rog, adaugă o explicație despre ce face codul, astfel încât orice utilizator să poată înțelege,

cybmeta cybmeta
21 iun. 2017 09:47:48