我的wordpress网站下载量有点大。在前端,它包括不必要的jquery。在我的萤火虫中它看起来像:
jquery.js?ver=1.3.2
和
jquery.form.js?ver=2.02m
我不需要将这些内容包含在内。
我很高兴他们留在wp-admin中,但我希望他们不要加载到前端。
我发现我认为这个文件正在加载wp-includes/script-loader.php
,但我不知道该取消注释该怎么办,或者该怎么办才能完全删除它。
有没有办法做到这一点,删除jquery而不破坏后端?
答案 0 :(得分:31)
您的主题可能正在添加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文件中。
答案 1 :(得分:31)
自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' );
}
}
答案 2 :(得分:22)
完全删除样式或脚本的正确方法是将其取消并取消注册。您还应注意,前端脚本是通过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版上进行了全面测试,并按预期工作。
编辑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';
}
}
答案 3 :(得分:5)
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
答案 4 :(得分:3)
查看您的主题文件。
可湿性粉剂内容/主题/ header.php文件
可能包含.js文件。
答案 5 :(得分:2)
你应该寻找一个没有jQuery的轻量级主题,而不是黑客攻击,然后在几个地方看到主题,因为他们正在寻找那些js文件。
答案 6 :(得分:2)
查看已呈现页面的来源;在header.php中调用<?php wp_head(); ?>
时,Wordpress通常默认包含jQuery,因此您可以查看网站中包含的jQuery。
如果你在header.php中删除<?php wp_head(); ?>
,你可能会失去其他插件功能,因为此时许多插件会“挂钩”到Wordpress中。
但是包括jQuery并不是什么大不了的事。它很小,Wordpress在某些方面依赖它。
答案 7 :(得分: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上测试
答案 8 :(得分:0)
通过取消注册jQuery,我能够将我的“事件”页面加载速度缩短2.2秒。 jQuery是一个很好的,但在我看来,页面速度是如此重要。
你永远不会有一个用户闲逛超过5秒,所以如果jQuery导致你的性能问题,那么我说要摆脱。
答案 9 :(得分:0)
删除默认的jquery,然后从文件夹或CDN添加jquery。仅使用一个“本地”或“ cdn”
// Remove the WordPress default jquery
wp_deregister_script( 'jquery' );
// using a local file
wp_enqueue_script(
'jquery', get_template_directory_uri() . '/lib/jquery-3.3.1.min.js','', '3.3.1', true
);
// using CDN
wp_enqueue_script(
'jquery', '//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js', '', '3.3.1', true
);
// $handle: 'jquery'
// $src:
// local: get_template_directory_uri() . '/lib/jquery-3.3.1.min.js'
// cdn: '//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js'
// $deps: '' (leave it empty)
// $ver: '3.3.1'
// $in_footer: true (boolean)
wp_enqueue_script( $handle, $src, $deps, $ver, $in_footer );
答案 10 :(得分:0)
在大多数 Wordpress 主题中。管理面板上使用的 jQuery (wp-admin) 或产品页面中使用的 jQuery。加快。这会起作用。在 WP 5.0 上测试 jQuery 仅在管理员登录或其产品页面时加载(用户是否登录产品页面无关紧要。(产品页面上的 jQuery 加载))
function my_jquery_remove() {
if ( ! is_admin() && !is_product() ) {
wp_deregister_script('jquery');
wp_register_script('jquery', false);
}
}
add_action('init', 'my_jquery_remove');