No se puede desregistrar un script usando wp_deregister_script

3 abr 2017, 20:08:34
Vistas: 14K
Votos: 8

Estoy intentando eliminar el script de Disqus en mi página principal, pero no logro hacerlo funcionar.

Aquí está la historia de los pasos que he realizado:

  1. Encontrar el nombre del script en los archivos de código fuente del plugin

    wp_register_script( 'dsq_count_script', plugins_url( '/media/js/count.js', FILE ) ); wp_localize_script( 'dsq_count_script', 'countVars', $count_vars ); wp_enqueue_script( 'dsq_count_script', plugins_url( '/media/js/count.js', FILE ) );

  2. Añadir una acción para el hook wp_print_scripts

    add_action('wp_print_scripts', array($this, 'deregister_unused_scripts'), 100);
    
  3. Implementar la función deregister_unused_scripts

    public function deregister_unused_scripts()
    {
        wp_dequeue_script('dsq_count_script');
        wp_deregister_script('dsq_count_script');
    }
    

Aún no funciona.

También probé con otro hook:

add_action('wp_footer', array($this, 'deregister_unused_scripts'), 100);

Pero esto tampoco ayudó, sigo obteniendo la salida en el footer:

<script type='text/javascript'>
/* <![CDATA[ */
var countVars = {"disqusShortname":"myname"};
/* ]]> */
</script>
<script type='text/javascript' src='http://myurl.net/wp-content/plugins/disqus-comment-system/media/js/count.js?ver=4.7.3'></script>

¿Qué podría estar mal?

EDITADO

Aquí está la acción utilizada para registrar el script del plugin:

add_action('wp_footer', 'dsq_output_footer_comment_js');
2
Comentarios

¿En qué hook y prioridad se está encolando el script?

Nathan Johnson Nathan Johnson
3 abr 2017 20:29:20

@NathanJohnson es el predeterminado = 10, por favor revisa la actualización de la pregunta

CROSP CROSP
3 abr 2017 20:41:56
Todas las respuestas a la pregunta 2
3
15

Al intentar quitar un script de la cola, necesitamos engancharnos después de que el script se haya encolado, pero antes de que se imprima. En este caso, el plugin Disqus está usando el hook wp_footer con una prioridad de 10 para encolar los scripts. Los scripts del pie de página se imprimen durante wp_footer con una prioridad de 20. Por lo tanto, deberíamos poder engancharnos a wp_footer con una prioridad de 11 y quitar el script de la cola.

add_action( 'wp_footer', 'wpse_262301_wp_footer', 11 );
function wpse_262301_wp_footer() { 
  wp_dequeue_script( 'dsq_count_script' ); 
}
3 abr 2017 20:52:21
Comentarios

¡Increíble! Funciona, muchas gracias por la respuesta y la explicación

CROSP CROSP
3 abr 2017 21:47:12

Para cualquier otra persona que leyó la solución demasiado rápido y configuró su prioridad en algo mayor a 20 (ej. 999 o 1000, etc.), tomen especial nota de que el autor de la solución señala explícitamente que los scripts se imprimen con una prioridad de 20. Perdí 45 minutos porque estaba demasiado ansioso por implementar la solución.

Art Geigel Art Geigel
8 sept 2020 03:36:59

No funciona para mí

IntoTheDeep IntoTheDeep
12 abr 2022 10:24:44
0

add_action('wp_footer') no funcionó para mí, pero sí 'wp_enqueue_scripts':

add_action( 'wp_enqueue_scripts', 'my_deregister_scripts', 1000 );
 function my_deregister_scripts() {
   wp_deregister_script( 'wdm_script' );
   wp_dequeue_script('wdm_script');
   wp_deregister_script( 'enjoyHint_script' );
   wp_dequeue_script('enjoyHint_script');
}
11 ago 2020 12:30:22