Не удается отменить регистрацию скрипта с помощью wp_deregister_script
Я пытаюсь убрать скрипт Disqus на главной странице, но, к сожалению, не могу понять, как это сделать.
Вот краткая история шагов, которые я предпринял:
Найти имя скрипта в исходных файлах плагина
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 ) );
Добавить действие для хука
wp_print_scriptsadd_action('wp_print_scripts', array($this, 'deregister_unused_scripts'), 100);Реализовать функцию
deregister_unused_scriptspublic 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');
При попытке удалить скрипт из очереди, нам нужно подключиться после того, как скрипт будет добавлен в очередь, но до его вывода. В данном случае, плагин Disqus использует хук wp_footer с приоритетом 10 для добавления скриптов в очередь. Скрипты в футере выводятся во время выполнения wp_footer с приоритетом 20. Таким образом, мы можем подключиться к wp_footer с приоритетом 11 и удалить скрипт из очереди.
add_action( 'wp_footer', 'wpse_262301_wp_footer', 11 );
function wpse_262301_wp_footer() {
wp_dequeue_script( 'dsq_count_script' );
}
Для всех, кто слишком быстро прочитал решение и установил приоритет больше 20 (например, 999 или 1000 и т. д.), обратите особое внимание, что автор решения явно указывает, что скрипты выводятся с приоритетом 20. Потратил 45 минут, потому что слишком торопился попробовать реализовать решение.
Art Geigel
У меня не сработал add_action('wp_footer'), но сработал wp_enqueue_scripts:
add_action( 'wp_enqueue_scripts', 'my_deregister_scripts', 1000 );
function my_deregister_scripts() {
// Отменяем регистрацию скрипта wdm_script
wp_deregister_script( 'wdm_script' );
// Удаляем скрипт wdm_script из очереди
wp_dequeue_script('wdm_script');
// Отменяем регистрацию скрипта enjoyHint_script
wp_deregister_script( 'enjoyHint_script' );
// Удаляем скрипт enjoyHint_script из очереди
wp_dequeue_script('enjoyHint_script');
}