WordPress教程

禁用 WooCommerce 样式和JS脚本购物车片段AJAX

阿里云

WooCommerce 在每个页面上加载三个核心 CSS 样式表,并在 WordPress 站点上安装时发布。可以通过从不需要它的页面和内容中删除样式和脚本来节省一些页面加载时间。它还从用于其功能的库中加载了许多其他 javascript 和 CSS 样式。WordPress 禁用 WooCommerce 购物车片段 AJAX(wc-ajax = get_refreshed_fragments)WooCommerce 网站,特别是大型网站,几乎总是会遇到下面的 AJAX 请求的加载时间问题。以下是如何以不同方式加载这些文件,以便它们仅出现在需要的页面上,从而加快非 WooCommerce 内容的页面加载时间。

  1. https://domain.com/?wc-ajax=get_refreshed_fragments
也想出现在这里?联系我们
创客主机

即使在我们的小型 WooCommerce 测试网站上,它也比其他任何请求花费的时间更长,并且不需要,因为它在主页上。在大型网站上,我们已经看到这个账户长达 10 秒的延迟!没错,10 秒。

WooCommerce 中的购物车碎片特征和/或 AJAX 请求用于在不刷新页面的情况下更新购物车总量。然而,这绝对是花费和很多次,这取决于你的主题,甚至没有被使用或需要。
可以通过修改主题的 functions.php 文件来解决,有三种选项,自己选择:

  • 仅禁用网站首页上的购物车分段
  • 仅停用首页和帖子中的购物车分段
  • 在除商店页面之外的所有页面上禁用所有 WooCommerce 样式和脚本。

1、在首页禁用购物车碎片

  1.     /** Disable Ajax Call from WooCommerce */
  2.     add_action( 'wp_enqueue_scripts', 'dequeue_woocommerce_cart_fragments', 11); 
  3.     function dequeue_woocommerce_cart_fragments() { if (is_front_page()) wp_dequeue_script('wc-cart-fragments'); }

在 functions.php 文件添加以上代码。

回到网站后台,打开 WooCommerce>设置 ”菜单,然后转到“ 产品 ”选项卡下的“ 显示 ”部分。启用“ 添加成功后重定向到购物车页面 ”选项。

2、在首页和文章上禁用购物车碎片

  1.     /** Disable Ajax Call from WooCommerce on front page and posts*/
  2.     add_action( 'wp_enqueue_scripts', 'dequeue_woocommerce_cart_fragments', 11);
  3.     function dequeue_woocommerce_cart_fragments() {
  4.     if (is_front_page() || is_single() ) wp_dequeue_script('wc-cart-fragments');
  5.     }

在 functions.php 文件添加以上代码。

3、整个站点范围内禁用所有 WooCommerce 样式和脚本

  1.     /** Disable All WooCommerce  Styles and Scripts Except Shop Pages*/
  2.     add_action( 'wp_enqueue_scripts', 'dequeue_woocommerce_styles_scripts', 99 );
  3.     function dequeue_woocommerce_styles_scripts() {
  4.     if ( function_exists( 'is_woocommerce' ) ) {
  5.     if ( ! is_woocommerce() && ! is_cart() && ! is_checkout() ) {
  6.     # Styles
  7.     wp_dequeue_style( 'woocommerce-general' );
  8.     wp_dequeue_style( 'woocommerce-layout' );
  9.     wp_dequeue_style( 'woocommerce-smallscreen' );
  10.     wp_dequeue_style( 'woocommerce_frontend_styles' );
  11.     wp_dequeue_style( 'woocommerce_fancybox_styles' );
  12.     wp_dequeue_style( 'woocommerce_chosen_styles' );
  13.     wp_dequeue_style( 'woocommerce_prettyPhoto_css' );
  14.     # Scripts
  15.     wp_dequeue_script( 'wc_price_slider' );
  16.     wp_dequeue_script( 'wc-single-product' );
  17.     wp_dequeue_script( 'wc-add-to-cart' );
  18.     wp_dequeue_script( 'wc-cart-fragments' );
  19.     wp_dequeue_script( 'wc-checkout' );
  20.     wp_dequeue_script( 'wc-add-to-cart-variation' );
  21.     wp_dequeue_script( 'wc-single-product' );
  22.     wp_dequeue_script( 'wc-cart' );
  23.     wp_dequeue_script( 'wc-chosen' );
  24.     wp_dequeue_script( 'woocommerce' );
  25.     wp_dequeue_script( 'prettyPhoto' );
  26.     wp_dequeue_script( 'prettyPhoto-init' );
  27.     wp_dequeue_script( 'jquery-blockui' );
  28.     wp_dequeue_script( 'jquery-placeholder' );
  29.     wp_dequeue_script( 'fancybox' );
  30.     wp_dequeue_script( 'jqueryui' );
  31.     }
  32.     }
  33.     }

在 functions.php 文件添加以上代码。

如果您正在构建自定义商城主题,这是推荐的过程。删除默认的 WooCommerce 样式表并加载使用自己的样式表,将在 WooCommerce 核心更新期间保护样式。如果您想禁用特定的样式表,你可以使用以下代码:

  1.     /**
  2.      * 在主题激活时设置WooCommerce图像尺寸
  3.      */
  4.     // 逐个删除每个样式
  5.     add_filter( 'woocommerce_enqueue_styles', 'jk_dequeue_styles' );
  6.     function jk_dequeue_styles( $enqueue_styles ) {
  7.     	unset( $enqueue_styles['woocommerce-general'] );	// Remove the gloss
  8.     	unset( $enqueue_styles['woocommerce-layout'] );		// Remove the layout
  9.     	unset( $enqueue_styles['woocommerce-smallscreen'] );	// Remove the smallscreen optimisation
  10.     	return $enqueue_styles;
  11.     }

然后像这样排列你自己的样式表:

  1.     /**
  2.      * 加载自己的样式表
  3.      */
  4.     function wp_enqueue_woocommerce_style(){
  5.     	wp_register_style( 'mytheme-woocommerce', get_template_directory_uri() . '/css/woocommerce.css' );
  6.  
  7.     	if ( class_exists( 'woocommerce' ) ) {
  8.     		wp_enqueue_style( 'mytheme-woocommerce' );
  9.     	}
  10.     }
  11.     add_action( 'wp_enqueue_scripts', 'wp_enqueue_woocommerce_style' );

禁用所有 CSS 样式和 JS 脚本 Woo 提供了一个过滤器,可以删除所有 3 个或单独的一个。

  1.     /**
  2.      * 禁用 WooCommerce 所有的 CSS 样式和 JS 脚本
  3.      */
  4.     add_action( 'template_redirect', 'remove_woocommerce_styles_scripts', 999 );
  5.     function remove_woocommerce_styles_scripts() {
  6.         if ( function_exists( 'is_woocommerce' ) ) {
  7.             if ( ! is_woocommerce() && ! is_cart() && ! is_checkout() ) {
  8.                 remove_action('wp_enqueue_scripts', [WC_Frontend_Scripts::class, 'load_scripts']);
  9.     	    remove_action('wp_print_scripts', [WC_Frontend_Scripts::class, 'localize_printed_scripts'], 5);
  10.     	    remove_action('wp_print_footer_scripts', [WC_Frontend_Scripts::class, 'localize_printed_scripts'], 5);
  11.             }
  12.         }
  13.     }

使用这段代码就不需要使用其它代码,在不是 WooCommerce 的相关页面,购物车和结算的其它页面都将禁用所有 CSS 样式和 JS 脚本,这样对于其它页面的加载速度会有很大的提高。

不要贪心,选择适合自己的一种代码添加就可以了,不要在 functions.php 文件中同时添加这几个代码。

禁用 WooCommerce 样式和 JS 脚本购物车片段 AJAX

已有 233 人购买
查看演示升级 VIP立刻购买

收藏
(0)

发表回复

热销模板

Ashade - 作品展示摄影相册WordPress汉化主题
LensNews

本站承接 WordPress / PbootCMS / DedeCMS 等
系统建站、仿站、开发、定制等业务!