如何从我的 WordPress 前端删除 jquery?
Posted
技术标签:
【中文标题】如何从我的 WordPress 前端删除 jquery?【英文标题】:How can I remove jquery from the frontside of my WordPress? 【发布时间】:2010-11-12 13:16:56 【问题描述】:我的 wordpress 网站下载起来有点重。在前端,它不必要地包含 jquery。在我的萤火虫中,它看起来像:
jquery.js?ver=1.3.2
和
jquery.form.js?ver=2.02m
我不需要为我包括这些。
我很高兴他们留在 wp-admin 中,但我希望他们不要加载到前端。
我在wp-includes/script-loader.php
中找到了我认为正在加载它们的文件,但我不确定要取消注释或如何将其完全删除。
有没有办法做到这一点,在不破坏后端的情况下删除 jquery?
【问题讨论】:
【参考方案1】:您的主题可能正在添加 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文件中。
【讨论】:
这已经过时了。请在下面查看我的解决方案。 是的。不再起作用了。 deweydb 的回答是正确的。 但它也删除了插件的js 我不确定,文档也是 wp_deregister_script 或 wp_dequeue_script 的作用。 WordPress 一团糟。【参考方案2】:完全删除样式或脚本的正确方法是将其出列并注销它。您还应该注意,前端脚本是通过 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';
【讨论】:
它还删除了所有插件的js 2017 年 6 月:我将此答案的一部分放入插件中:github.com/jonathanbell/remove-jquery-wordpress-plugin 我为 WP 制作了一个开源插件,其中有很多设置来管理 WP 上的 jQuery:github.com/Remzi1993/wp-jquery-manager 我很困惑。两个函数调用来删除一个脚本?【参考方案3】:从 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' );
【讨论】:
终于!谢谢。 这仍然是 5.0 的最佳方式吗?【参考方案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找到更技术性的解释
【讨论】:
【参考方案5】: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 上测试
【讨论】:
【参考方案6】:查看您的主题文件。
wp-content/themes/header.php
可能包含 .js 文件。
【讨论】:
【参考方案7】:WordPress 5 及以上版本(已测试)
删除默认 jquery 并从文件夹或 CDN 添加您的 jquery。只使用一个,'local' 或 '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 );
【讨论】:
【参考方案8】:查看渲染页面的来源;当在 header.php 中调用<?php wp_head(); ?>
时,Wordpress 通常默认包含 jQuery,因此您仍然可以看到 jQuery 包含在您的站点中。
如果您删除 header.php 中的 <?php wp_head(); ?>
,您可能会失去其他插件功能,因为此时许多插件“挂钩”到 Wordpress。
但是包括 jQuery 并不是什么大不了的事。它很小,Wordpress 在某些方面依赖它。
【讨论】:
【参考方案9】:在大多数 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');
【讨论】:
【参考方案10】:如果您使用的是缩小版,jQuery.js 只有 15KB,如果您使用的是不需要它的主题,则完全没有这些。
您可能应该寻找一个没有 jQuery 的轻量级主题,而不是破解它,然后看到主题在几个地方中断,因为他们正在寻找那些 js 文件。
【讨论】:
jQuery.js 大约是那个大小,如果你使用缩小版并且你使用 GZip 压缩数据。 jQuery.form.js 是 22K 未压缩和未缩小的。 15KB 与 22KB 不会有明显差异,我认为。【参考方案11】:通过取消注册 jQuery,我能够将“事件”页面加载速度缩短 2.2 秒。 jQuery 是一个不错的选择,但在我看来,页面速度非常重要。
你永远不会让用户停留超过 5 秒,所以如果 jQuery 导致你出现性能问题,那么我说摆脱。
【讨论】:
同意。将所有内容构建为不需要它,并仅在必须时使用它。秒是一个巨大的交易。不仅仅是下载,还有处理时间。以上是关于如何从我的 WordPress 前端删除 jquery?的主要内容,如果未能解决你的问题,请参考以下文章
从我的 .csv URL 列表中删除 Wordpress Post