Nu pot dezînregistra un script folosind wp_deregister_script
Î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.
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 ) );
Adaugă o acțiune pentru hook-ul
wp_print_scriptsadd_action('wp_print_scripts', array($this, 'deregister_unused_scripts'), 100);Implementează funcția
deregister_unused_scriptspublic 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');
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' );
}
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
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');
}