Nu pot dezînregistra un script folosind wp_deregister_script

3 apr. 2017, 20:08:34
Vizualizări: 14K
Voturi: 8

Încerc să elimin scriptul Disqus de pe pagina principală, dar din păcate nu reușesc să îmi dau seama cum să fac acest lucru.

Iată povestea pașilor pe care i-am făcut.

  1. Găsește numele scriptului în fișierele sursă ale pluginului

    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. Adaugă o acțiune pentru hook-ul wp_print_scripts

    add_action('wp_print_scripts', array($this, 'deregister_unused_scripts'), 100);
    
  3. Implementează funcția deregister_unused_scripts

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

Totuși, nu funcționează.

Am încercat și un alt hook

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

Dar nici acest lucru nu a ajutat, încă primesc un output în 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>

Ce ar putea fi greșit?

EDITARE

Iată acțiunea folosită pentru înregistrarea scriptului pluginului.

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

La ce hook și prioritate este încărcat scriptul?

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

@NathanJohnson este cel implicit = 10, te rog vezi actualizarea întrebării

CROSP CROSP
3 apr. 2017 20:41:56
Toate răspunsurile la întrebare 2
3
15

Când încercăm să eliminăm un script din coadă, trebuie să ne conectăm după ce scriptul a fost adăugat în coadă, dar înainte să fie afișat. În acest caz, plugin-ul Disqus folosește hook-ul wp_footer cu o prioritate de 10 pentru a adăuga scripturile în coadă. Scripturile din subsol sunt afișate în timpul wp_footer cu o prioritate de 20. Așadar, ar trebui să putem să ne conectăm la wp_footer cu o prioritate de 11 și să eliminăm scriptul din coadă.

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
Comentarii

Super !! Funcționează, mulțumesc mult pentru răspuns și explicație

CROSP CROSP
3 apr. 2017 21:47:12

Pentru oricine altcineva care a citit soluția prea repede și a setat prioritatea la ceva mai mare de 20 (de ex. 999 sau 1000 etc.), rețineți în mod special că autorul soluției subliniază explicit că scripturile sunt tipărite cu o prioritate de 20. Am pierdut 45 de minute pentru că am fost prea nerăbdător să încerc să implementez soluția.

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

Nu funcționează pentru mine

IntoTheDeep IntoTheDeep
12 apr. 2022 10:24:44
0

add_action('wp_footer') nu a funcționat pentru mine, dar a funcționat wp_enqueue_scripts:

add_action( 'wp_enqueue_scripts', 'my_deregister_scripts', 1000 );
 function my_deregister_scripts() {
   // Elimină înregistrarea și eliminarea din coadă a scriptului 'wdm_script'
   wp_deregister_script( 'wdm_script' );
   wp_dequeue_script('wdm_script');
   
   // Elimină înregistrarea și eliminarea din coadă a scriptului 'enjoyHint_script'
   wp_deregister_script( 'enjoyHint_script' );
   wp_dequeue_script('enjoyHint_script');
}
11 aug. 2020 12:30:22