如何从我的WordPress前端中移除jquery?

10 浏览
0 Comments

如何从我的WordPress前端中移除jquery?

我的WordPress网站下载速度有点慢。在前端,它不必要地包含了jQuery。在我的Firebug中看到的是:\n

jquery.js?ver=1.3.2

\n和\n

jquery.form.js?ver=2.02m

\n我不需要它们被包含进来。\n我希望它们保留在wp-admin中,但是我希望它们不要在前端加载。\n我找到了我认为加载它们的文件在wp-includes/script-loader.php,但是我不确定应该取消哪个注释或者如何完全移除它们的前端加载。\n有没有办法做到这一点,移除jQuery而不破坏后台?

0
0 Comments

自 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' );
    }
}

这是目前最好的方法吗?

0
0 Comments

如何从WordPress的前端删除jQuery?

有时候,您可能希望从WordPress的前端中删除jQuery。这可能是因为您的主题已经添加了jQuery,而您想要使用其他库或者没有使用jQuery的纯JavaScript代码。以下是解决这个问题的方法:

1. 首先,查看您的主题是否已经正确地添加了jQuery。如果是这样,它应该使用wp_enqueue_script()函数。如果是这样,您可以使用wp_deregister_script()函数来删除jQuery。只需在主题目录中的functions.php文件中添加以下代码即可:

wp_deregister_script('jquery');

2. 但是请注意,从整个网站中删除jQuery可能会对管理员部分产生意外的后果。为了避免在管理页面中删除jQuery,您可以使用以下代码代替:

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

现在,只有非管理页面才会运行wp_deregister_script()函数。

请注意,如果您删除了jQuery,某些插件可能会受到影响,因为它们可能依赖于jQuery。在删除jQuery之前,请确保没有插件会受到影响。

希望这些解决方法对您有帮助!

0
0 Comments

如何从我的WordPress前端中删除jquery?

有时候,您可能想要从WordPress前端中删除jquery。正确的方法是通过wp_dequeue_script和wp_deregister_script将其取消排队和注销。还要注意,前端脚本通过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');   
}

此方法已在WordPress版本4.0上进行了全面测试,并按预期工作。

作为概念验证,您可以在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

这样的实现方式让我感到困惑。为什么要调用两次函数来删除一个脚本呢?

0