web-dev-qa-db-ja.com

Wp_deregister_scriptを使用してスクリプトを登録解除することはできません

私は自分のフロントページでDisqusスクリプトの詳細を取得しようとしていますが、残念ながらこれを行う方法を管理できません。

これが私がしたステップのちょっとした話です。

  1. プラグインのソースコードファイルでスクリプト名を見つけます

    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. wp_print_scriptsフックにアクションを追加

    add_action('wp_print_scripts', array($this, 'deregister_unused_scripts'), 100);
    
  3. deregister_unused_scripts関数を実装する

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

まだ動作しません。

私はまた別のフックを試した

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

しかし、これも役に立ちませんでした、私はまだフッターに出力を得ます。

<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>

何が悪いの?

_編集_

これがプラグインスクリプトを登録するためのアクションです。

add_action('wp_footer', 'dsq_output_footer_comment_js');
5
CROSP

スクリプトをデキューしようとするときは、スクリプトがエンキューされた後、印刷される前にフックする必要があります。この場合、Disqusプラグインは優先度10でwp_footerフックを使用してスクリプトをエンキューします。フッタースクリプトは優先度20でwp_footerの間に印刷されます。したがって、優先度11でwp_footerにフックしてスクリプトをデキューできるはずです。

add_action( 'wp_footer', 'wpse_262301_wp_footer', 11 );
function wpse_262301_wp_footer() { 
  wp_dequeue_script( 'dsq_count_script' ); 
}
7
Nathan Johnson