Non riesco a deregistrare uno script con wp_deregister_script

3 apr 2017, 20:08:34
Visualizzazioni: 14K
Voti: 8

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.

  1. 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 ) );

  2. Aggiungere un'azione per l'hook wp_print_scripts

    add_action('wp_print_scripts', array($this, 'deregister_unused_scripts'), 100);
    
  3. Implementare la funzione deregister_unused_scripts

    public 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');
2
Commenti

A quale hook e priorità viene accodato lo script?

Nathan Johnson Nathan Johnson
3 apr 2017 20:29:20

@NathanJohnson è quello predefinito = 10, per favore vedi l'aggiornamento della domanda

CROSP CROSP
3 apr 2017 20:41:56
Tutte le risposte alla domanda 2
3
15

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' ); 
}
3 apr 2017 20:52:21
Commenti

Fantastico!! Funziona, grazie mille per la risposta e la spiegazione

CROSP CROSP
3 apr 2017 21:47:12

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 Art Geigel
8 set 2020 03:36:59

Non funziona per me

IntoTheDeep IntoTheDeep
12 apr 2022 10:24:44
0

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');
}
11 ago 2020 12:30:22