如何防止加载所有插件的资源?

时间:2014-06-30 作者:stackoverclan

Wordpress正在加载所有插件的所有客户端资源,而不仅仅是感兴趣的插件。全局加载jqery可能有意义,但在后端插件中加载所有其他插件的Javascript则没有意义。

现在,我如何防止Wordpress加载其他插件的资源?

有wp\\u出列,但我不确定在加载所有插件的最后是否有另一个回调,所以我可以自己清理它。我目前只对过滤后端插件资源感兴趣。

ps:我真的被困在这一点上了,我真的很惊讶它似乎是这样设计的,我的意思是,wp\\U enque很好,但wp不关心它是什么,所以你需要自己做所有的腿部工作。想象一下,2个以上不同的Dojo/CommonJS/Require基于JS的应用程序正在加载它们自己的配置和版本:麻烦不断,这就是我现在面临的问题。

谢谢,欢迎提出任何意见。

3 个回复
SO网友:Jason Brennecke

您可以尝试回显wp\\u head和wp\\u footer以查看它们包含的内容,但遗憾的是,这会遗漏一些作者的硬代码。基本上,我所做的是wp\\u出列/wp\\u取消注册,这是基于我在源代码、错误日志中看到的加载内容,甚至只是查看每个已安装插件中的调用内容。我发现将生产站点下载到本地开发环境更容易。使用记事本++然后单击搜索->在所有文件中查找->在本地开发环境中指定插件目录(或主题),并搜索以下模式wp_enqueue 即使*.js 等等,因为我得到了更好的图片和可以加载的内容。然后,我对现场环境进行必要的更改。

如果您确定了不需要的脚本,请将它们弹出到主题函数中类似的函数中。php文件:

function wp_getridofscript() {
   wp_dequeue_script( \'jquery-ui-core\' );
   wp_deregister_script( \'jquery-ui-core\' );
}
add_action( \'wp_print_scripts\', \'wp_getridofscript\', 100 );
您可以拥有任意数量的函数,无需为每个函数编写单独的函数。IE:

function wp_getridofscript() {
   wp_dequeue_script( \'jquery\' );
   wp_deregister_script( \'jquery\' );
   wp_dequeue_script( \'jquery-ui-core\' );
   wp_deregister_script( \'jquery-ui-core\' );
}
add_action( \'wp_print_scripts\', \'wp_getridofscript\', 100 );

SO网友:redelschaap

当使用加载额外css/js文件的插件时,这总是一个问题。您可以向要排除css和js文件的页面添加自定义字段(称为page\\u exclude\\u css和\\u js),并使用逗号分隔的样式和脚本处理程序作为其值。然后,将一个函数添加到wp\\u排队钩子(位于9999这样的位置)中,该钩子将所有这些处理程序出列。

SO网友:Mark Kaplun

由于没有中央存储库分配的句柄名称,插件不可能避免创建自己的句柄名称,即使有中央存储库,一些插件也需要使用JS库的版本3,而其他插件则需要版本4(实际上在我使用select2库时发生过),因此即使存在一个简单的命名方案,也可能不够。

这种情况的最终结果是,任何尝试的解决方案都将是临时的,而不是“未来的教授”。如果你拥有一个网站,至少你可以看到哪些插件在排队和退队,如果你写了一个主题或插件,除了尝试测试流行的主题和插件,并根据你想要与它们平滑集成的程度调整代码之外,没有什么可做的了。

结束

相关推荐

注销一个css文件会将其留在队列中

我正在尝试注销一个CSS文件,它是从插件系统添加的。CSS文件在所有页面中都是无用的。因此,我添加了一个简单的wp_deregister_style 传递用于注册的CSS类的名称。事实上,CSS文件不再打印,而是查看$wp_styles 变量我仍然可以在队列数组中看到“item”。有没有办法去掉它?