为什么Thickbox jQuery会加载到我的站点上?

时间:2016-08-29 作者:Jake Wilson

根据Wordpress:https://codex.wordpress.org/Javascript_Reference/ThickBox

WordPress使用了最初由Cody Lindley创建的ThickBox jQuery库的修改版本。

ThickBox支持WordPress管理中使用的模式灯箱,包括帖子编辑器的“媒体”按钮(仅适用于WordPress 3.5之前的版本)和插件“搜索结果”屏幕上的“详细信息”链接。

那么,如果这个东西是为Wordpress管理仪表板设计的,那么为什么即使我没有登录仪表板,它也会加载到我网站的前端呢?

可以把它关掉吗?我宁愿不要不必要地加载未使用的JavaScript资源。

1 个回复
最合适的回答,由SO网友:Andrei 整理而成

你说得很对,ThickBox很老了,它应该只出现在管理仪表板上,但能够改变这种行为使WordPress变得很棒(有时不是)。

实际上,每个主题或插件都可以调用此库,以帮助

wp_enqueue_script(\'thickbox\') 函数或它可以将其用作依赖项,如下所示:

wp_enqueue_script( \'my_own_modal\' , _URL_TO_FILE_, array(\'thickbox\') );
第三个参数的工作方式类似于依赖项数组,其中的每个库都已加载。有时,开发人员也会在前端错误地将其排队,或者在插件在前端创建图像上传器时故意将其排队。

Solution?

那么,您可以尝试禁用每个插件,看看哪个插件可以做到这一点,或者您可以搜索所有wp-content 的文件夹thickbox 键并查看其调用位置。

如果找不到,可以尝试使用wp_deregister_script

<?php
function my_de_scripts_method() {
    wp_deregister_script(\'thickbox\');
}    

add_action(\'wp_enqueue_scripts\', \'my_de_scripts_method\', 9999);
?>
如果这仍然不起作用(可能会被称为延迟或在另一个钩子上),您可以采取肮脏的方式,注册thickbox 在WordPress执行with和empty path之前,它将被忽略。

<?php
function my_over_register_scripts_method() {
    wp_register_script( \'thickbox\', \'\' );
}    

add_action(\'wp_enqueue_scripts\', \'my_over_register_scripts_method\', 1);
?>
Edit: 如果只想在前端删除它,只需使用is_admin 有条件的

<?php
function my_de_scripts_method() {
    if ( ! is_admin() ) {
        wp_deregister_script(\'thickbox\');
    }
}    

add_action(\'wp_enqueue_scripts\', \'my_de_scripts_method\', 9999);
?>