2009-07-21 70 views
25

我的WordPress的网站有点沉重下载。在前端,它不必要地包含jquery。在我的萤火虫,它看起来像:如何从WordPress的正面删除jquery?

jquery.js?ver=1.3.2 

jquery.form.js?ver=2.02m 

我不需要这些被列入我。

我很高兴他们留在wp-admin,但我希望他们不要加载在前端。

我找到了我认为正在加载它们的文件wp-includes/script-loader.php,但我不知道要将注释清除掉或做些什么才能将其彻底清除。

有没有办法做到这一点,删除jquery没有破坏后端?

回答

26

JQuery可能正在被你的主题添加。如果您的主题正确添加,则应使用wp_enqueue_script()函数。要删除JQuery,只需使用wp_deregister_script()函数。

wp_deregister_script('jquery'); 

删除整个站点的JQuery可能会导致您的管理部分产生一些意想不到的后果。为避免你的管理页面删除了jQuery,使用此代码来代替:

if (!is_admin()) wp_deregister_script('jquery'); 

未管理页面将运行wp_deregister_script()功能现在只有页面。

将此代码添加到主题目录下的functions.php文件中。

+2

这现在已过时。请参阅下面的解决方案。 – deweydb 2014-05-08 19:37:42

+0

是的。不再工作了。 deweydb的回答是正确的。 – danielwinter 2014-05-12 13:12:51

4

看看你的主题文件。

的wp-content /主题/ header.php文件

可能包括.js文件。

3

如果您使用缩小版本,jQuery.js只有15KB,如果您使用的是不需要它的主题,则完全没有这些。

你应该寻找一个没有jQuery的轻量级主题,而不是黑客,然后在几个地方看到主题休息,因为他们正在寻找这些js文件。

+0

的jquery.js大致是大小,如果你使用缩小的版本**和**,您可以压缩数据与GZip。 jQuery.form.js是22K未压缩和未压缩的。 – 2009-07-21 07:52:25

+0

15KB与22KB不会有显着差异。 – 2009-07-21 09:07:52

3

查看呈现页面的源代码;在header.php中调用<?php wp_head(); ?>时,WordPress默认会默认包含jQuery,因此您可能会看到包含在您网站中的jQuery。

如果您在header.php中删除<?php wp_head(); ?>,那么您可能会失去其他插件功能,因为此时有很多插件“挂钩”到Wordpress中。

但包括jQuery并不是什么大不了的。它很小,Wordpress依赖于它的一些东西。

4

WordPress通过名为<?php wp_head(); ?>的模板标记添加了此jQuery调用,该模板标记出现在大多数主题中,并且对于一些插件的工作是必需的。

这可能很烦人,不仅是因为加载,而是因为它可能会杀死以前加载的jQuery,甚至可能阻碍一些尝试加载jQuery的插件。

快速修复被开扩了在你的主题目录中的文件header.php文件,并添加:

<?php wp_deregister_script('jquery'); ?> 

权利之前

<?php wp_head(); ?> 

或者只是他们两个结合成:

<?php wp_deregister_script('jquery'); wp_head(); ?> 

可以找到更多的技术说明here

1

通过取消注册jQuery,我能够在2.2秒内关闭“事件”页面加载速度。 jQuery是一个很好的,但在我看来,页面速度是如此重要。

你永远不会有用户停留超过5秒,所以如果jQuery导致你的性能问题,那么我说摆脱。

26

所有其他解决方案现在已经过时作为WordPress的3.6

add_filter('wp_default_scripts', 'change_default_jquery'); 

function change_default_jquery(&$scripts){ 
    if(!is_admin()){ 
     $scripts->remove('jquery'); 
     $scripts->add('jquery', false, array('jquery-core'), '1.10.2'); 
    } 
} 
17

正确的方法来彻底删除样式或脚本是出列它注销它。您还应该注意前端脚本通过wp_enqueue_scripts钩子处理,而后端脚本通过admin_enqueue_scripts钩子处理。

所以考虑到这一点,你可以做以下

add_filter('wp_enqueue_scripts', 'change_default_jquery', PHP_INT_MAX); 

function change_default_jquery(){ 
    wp_dequeue_script('jquery'); 
    wp_deregister_script('jquery'); 
} 

编辑1

这对WordPress版本4.0和预期的工作得到了充分的测试。

EDIT 2

作为概念验证,下面的代码粘贴到functions.php。这将打印在您的网站的头成功或失败消息,后端和前端

add_action('wp_head', 'check_jquery'); 
add_action('admin_head', 'check_jquery'); 
function check_jquery() { 

    global $wp_scripts; 

    foreach ($wp_scripts->registered as $wp_script) { 
     $handles[] = $wp_script->handle; 
    } 

    if(in_array('jquery', $handles)) { 
     echo 'jquery has been loaded'; 
    }else{ 
     echo 'jquery has been removed'; 
    } 
} 
1
function my_init() { 
    if (!is_admin()) { 
     wp_deregister_script('jquery'); 
     wp_register_script('jquery', false); 
    } 
} 
add_action('init', 'my_init'); 

这是正确的 - 删除jQuery库JS。从其他的答案代码删除所有的JS(即使JS,你安装的插件添加)

测试在4.3.1