Desregistrar scripts en una página específica

19 ago 2014, 21:52:39
Vistas: 16.5K
Votos: 4

Necesito excluir ciertos scripts para que no se ejecuten en una página determinada. He probado este código pero no funciona: cuando inspecciono la página, los scripts siguen cargándose en el footer de mi página.

Aquí está mi código en functions.php

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

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

     }
}

¿Qué me falta? ¡Gracias!

1
Comentarios

¿Puedes probar cambiar la prioridad de 100 al valor por defecto que es 10? Prueba con add_action( 'wp_enqueue_scripts', 'my_deregister_javascript' );

Maruti Mohanty Maruti Mohanty
19 ago 2014 22:50:51
Todas las respuestas a la pregunta 4
0

Tienes un error básico en tu código. El siguiente código

if ( !is_page('mi-pagina') ) {

significa que si no estás en esa página, desregistres los scripts. Echa un vistazo a los operadores de php

! ->  Negación !$x Verdadero si $x no es verdadero

Además, ¿por qué no excluir esta página específica cuando registres inicialmente estos scripts? Algo como:

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

function my_register_javascript() {
   if ( !is_page('mi-pagina') ) {

       // REGISTRAR/ENCOLAR SCRIPTS

     }
}

Es mucho más limpio y eficiente. No veo el sentido de registrar un script para luego desregistrarlo. Es mejor registrar los scripts condicionalmente desde el principio

20 ago 2014 07:33:51
0

Finalmente conseguí que SOLO mi página de inicio no cargue jQuery, pensé en compartirlo para posiblemente ahorrarle a otro desarrollador 8 horas de prueba y error.

// eliminar jQuery SOLO de la página de inicio

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

NOTA: is_page de la pregunta inicial no funciona cuando quieres usar front-page o home en el argumento, debes usar is_home (eso me costó una hora)

29 ene 2017 20:50:49
1

Probablemente intentaría cargar esos scripts solo en páginas específicas, en lugar de cargarlos y luego descargarlos:

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

De lo contrario, podrías probar wp_dequeue_script en lugar de wp_deregister_script

Espero que esto ayude.

19 ago 2014 23:09:37
Comentarios

He agregado el operador ! al código para que coincida con el OP. He votado a favor de la respuesta. Si alguien no está de acuerdo, no duden en revertir mi cambio :-)

Pieter Goosen Pieter Goosen
20 ago 2014 08:08:07
1
//Eliminar jQuery solo en la página de inicio

add_action( 'wp_enqueue_scripts', 'my_deregister_javascript' );

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

Agrega este script en el archivo function.php de tu tema para resolver el problema con jQuery

21 jun 2017 08:56:50
Comentarios

las respuestas que solo incluyen código no son buenas. Por favor, agrega alguna explicación sobre lo que hace el código para que cualquier usuario pueda entenderlo,

cybmeta cybmeta
21 jun 2017 09:47:48