Non riesco a deregistrare uno script con wp_deregister_script
Sto cercando di rimuovere lo script Disqus dalla mia homepage, ma purtroppo non riesco a capire come fare.
Ecco una breve storia dei passaggi che ho seguito.
Trovare il nome dello script nei file sorgente 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 ) );
Aggiungere un'azione per l'hook
wp_print_scriptsadd_action('wp_print_scripts', array($this, 'deregister_unused_scripts'), 100);Implementare la funzione
deregister_unused_scriptspublic function deregister_unused_scripts() { wp_dequeue_script('dsq_count_script'); wp_deregister_script('dsq_count_script'); }
Ancora non funziona.
Ho anche provato un altro hook
add_action('wp_footer', array($this, 'deregister_unused_scripts'), 100);
Ma neanche questo ha aiutato, continuo a vedere l'output nel 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>
Cosa potrebbe essere sbagliato?
EDIT
Ecco l'azione utilizzata per registrare lo script del plugin.
add_action('wp_footer', 'dsq_output_footer_comment_js');
Quando si tenta di rimuovere uno script dalla coda, dobbiamo agganciarci dopo che lo script è stato accodato, ma prima che venga stampato. In questo caso, il plugin Disqus utilizza l'hook wp_footer con priorità 10 per accodare gli script. Gli script del footer vengono stampati durante wp_footer con priorità 20. Quindi dovremmo essere in grado di agganciarci a wp_footer con priorità 11 e rimuovere lo script dalla coda.
add_action( 'wp_footer', 'wpse_262301_wp_footer', 11 );
function wpse_262301_wp_footer() {
wp_dequeue_script( 'dsq_count_script' );
}
Per chiunque altro abbia letto la soluzione troppo velocemente e abbia impostato la priorità a un valore maggiore di 20 (es. 999 o 1000 ecc.), fate particolare attenzione al fatto che l'autore della soluzione sottolinea esplicitamente che gli script vengono stampati con una priorità di 20. Ho perso 45 minuti perché ero troppo impaziente di provare a implementare la soluzione.
Art Geigel
add_action('wp_footer') non ha funzionato per me, ma ha funzionato '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');
}