我正在使用一个插件,该插件将javascript文件放入其一个短代码函数(我在页面上运行)中。
我不想加载此文件。
所以我试着用wp_dequeue_script
在我的functions.php
但这不起作用。
也许是我的functions.php
在页面中的短代码之前加载文件?我怎样才能避开这个问题?
快捷码功能:
global $dwqa, $dwqa_sript_vars, $script_version;
ob_start();
$dwqa->template->remove_all_filters( \'the_content\' );
echo \'<div class="dwqa-container" >\';
dwqa_load_template( \'question\', \'submit-form\' );
echo \'</div>\';
$html = ob_get_contents();
$dwqa->template->restore_all_filters( \'the_content\' );
ob_end_clean();
wp_enqueue_script( \'jquery-ui-autocomplete\' );
wp_enqueue_script( \'dwqa-submit-question\', DWQA_URI . \'templates/assets/js/dwqa-submit-question.js\', array( \'jquery\', \'jquery-ui-autocomplete\' ), $script_version, true );
wp_localize_script( \'dwqa-submit-question\', \'dwqa\', $dwqa_sript_vars );
return $this->sanitize_output( $html );
我如何才能不加载此特定
js
文件
最合适的回答,由SO网友:cjbj 整理而成
评估短代码时,站点的标题已经组装好。所以如果短码想要enqueue a script 必须在页脚中执行此操作(通过将最后一个参数设置为wp_enqueue_script
到true
.
此时,阻止文件实际包含在页脚中还为时不晚。通常,在functions.php
您可以将脚本排队或(取消)注册到after_setup_theme
钩但是,如果您查看order in which actions are executed 您可能会在脚本进入队列之前很久就尝试取消其注册。
因此,您必须找到一个钩子,该钩子在短代码将脚本排入队列后激发。合乎逻辑的选择是wp_footer
, 像这样:
add_action (\'wp_footer\',\'wpse240803_deregister_dwqa\');
function wpse240803_deregister_dwqa() {
wp_deregister_script (\'dwqa-submit-question\');
}