我的wordpress网站下载有点重.在前端,它包括不必要的jquery.在我的萤火虫中它看起来像:
jquery.js?ver=1.3.2
Run Code Online (Sandbox Code Playgroud)
和
jquery.form.js?ver=2.02m
Run Code Online (Sandbox Code Playgroud)
我不需要将这些包括在内.
我很高兴他们留在wp-admin中,但我希望他们不要加载到前端.
我找到了我认为正在加载它们的文件,wp-includes/script-loader.php但是我不确定要取消注释或者要做什么来彻底删除它.
有没有办法做到这一点,删除jquery而不破坏后端?
dew*_*ydb 34
截至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' );
}
}
Run Code Online (Sandbox Code Playgroud)
Ner*_*mer 33
您的主题可能正在添加JQuery.如果您的主题正确添加它,它应该使用该wp_enqueue_script()功能.要删除JQuery,只需使用该wp_deregister_script()功能.
wp_deregister_script('jquery');
Run Code Online (Sandbox Code Playgroud)
删除整个站点的JQuery可能会对您的管理部分造成一些意想不到的后果.要避免在管理页面上删除JQuery,请改用以下代码:
if ( !is_admin() ) wp_deregister_script('jquery');
Run Code Online (Sandbox Code Playgroud)
现在只有非管理页面的页面才能运行该wp_deregister_script()功能.
将此代码添加到主题目录中的functions.php文件中.
Pie*_*sen 27
完全删除样式或脚本的正确方法是将其出列并取消注册.您还应注意,前端脚本是通过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');
}
Run Code Online (Sandbox Code Playgroud)
编辑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';
}
}
Run Code Online (Sandbox Code Playgroud)
小智 5
WordPress通过一个名为的模板标签添加了jQuery调用,该模板标签<?php wp_head(); ?>出现在大多数主题中,对于某些插件而言,这是必需的。
这可能很烦人,不仅是因为加载,还因为它可能杀死以前加载的jQuery,甚至可能妨碍某些尝试加载jQuery的插件。
快速修复方法是在主题目录中打开文件header.php,并添加:
<?php wp_deregister_script('jquery'); ?>
Run Code Online (Sandbox Code Playgroud)
就在之前
<?php wp_head(); ?>
Run Code Online (Sandbox Code Playgroud)
或者只是将它们合并为:
<?php wp_deregister_script('jquery'); wp_head(); ?>
Run Code Online (Sandbox Code Playgroud)
可以在这里找到更多技术说明