No se puede desregistrar un script usando wp_deregister_script
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:
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 ) );
Añadir una acción para el hook
wp_print_scriptsadd_action('wp_print_scripts', array($this, 'deregister_unused_scripts'), 100);Implementar la función
deregister_unused_scriptspublic 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');
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' );
}
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
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');
}