WooCommerce: Tắt Ajax Cart Fragments & tại sao không nên dùng

Quảng cáo
Ads_ngang
Website dinhthuanit.com có bài WooCommerce: Tắt Ajax Cart Fragments & tại sao không nên dùng

Bạn đang đọc bài viết này vì trang web WooCommerce của bạn chậm và bạn đang tự hỏi tại sao URL “ /wc-ajax=get_refreshed_fragments ” tạo ra sự chậm trễ và đôi khi quá tải máy chủ.

Bên cạnh đó, có quá nhiều hướng dẫn về WooCommerce Ajax Cart Fragments (bao gồm có plugin và các tùy chọn về năng suất của Plugin), và bạn mong muốn tìm hiểu chúng để làm những gì và thế nào tắt tính năng này trong woocommerce.

Công cụ đo lường hiệu suất như Pingdom và GTMetrix thường đổ lỗi về chức năng này của WooCommerce. Và nếu bạn biết vô hiệu hóa nó có thể cải thiện vận tốc trang web của bạn một cách đáng kể, và từ đấy sẽ tăng tỷ lệ chuyển đổi bán hàng.

Đó là mọi thứ những gì bạn phải biết.

WooCommerce Ajax Cart Fragments là gì

Trong lĩnh vực thiết kế web, Ajax (   A.J.A.X. = Asynchronous JavaScript And XML   ) là một công nghệ trong nền tảng web , trong đó, cho phép bạn chạy các chức năng mà không nên làm mới trang .

Hãy suy nghĩ về “Ajax Add to Cart” trên trang WooCommerce Shop: bạn cũng có thể thêm mặt hàng vào giỏ hangf (và cập nhật giỏ hàng) mà không cần thiết phải tải lại trang; chạy Ajax và giao tiếp với máy chủ “asynchronously / không đồng bộ” .

Tiếp theo, chúng ta hãy tìm hiểu  WooCommerce Ajax Cart Fragment sẽ dùng vào việc gì   và nó đại diện cho các URL kiểu như “ yoursite.com/
wc-ajax=get_refreshed_fragments
“.

Tính năng Cập nhật giỏ hàng bằng ajax trên trang cửa hàng WooCommerce khi option Ajax add to cart được kích hoạt. Bạn sẽ thấy widget cart cập nhật ngay khi bạn nhấn thêm sản phẩm vào giỏ hàng mà chẳng cần tải lại trang / chuyển hướng.

Ngay cả các website nhỏ, rồi cho dù cả trên các trang không tạo bởi WooCommerce, WooCommerce luôn “get” dữ liệu giỏ hàng để nó sẵn sàng “recalculate” mỗi khi một chiếc gì đó được thực hiện (hoặc không được thực hiện!) trên một trang WordPress.

Điều này cấp phép WooCommerce cập nhật giỏ hàng theo thời gian thực và thực hiện buổi lễ Add to cart ngay tức thì cho hành động Ajax .

Về cơ bản, lời gọi ajax “ /
wc-ajax=get_refreshed_fragments
” để cập nhật các mặt hàng được thêm vô giỏ và tổng cộng tiền mà không luôn nên làm mới trang hiện tại.

Ajax là giải pháp tuyệt vời, tuy nhiên nó cũng ảnh đến hiệu suất của trang và plugin xung đột chức năng này còn cũng đều có thể gây ra. Đọc tiếp biện pháp ở bên dưới …

Tại sao nên vô hiệu hóa WooCommerce Ajax Cart Fragments

Để thực hành việc cập nhật giỏ hàng trên mỗi trang của trang web của bạn, WooCommerce chạy chức năng Ajax này mỗi khi bạn load trang.

Thậm chí trên trang About, trang chủ không có sản phẩm. Thậm chí trên trang Contact nếu bạn chỉ có tạo form liên hệ với contact form 7.

Nếu theme của bạn không tích hợp drop-down widget cart bởi WooCommerce , và nếu bạn chưa thêm sản phẩm nào vào giỏ hàng, cũng có thể có thể bạn sẽ muốn loại bỏ chức năng ajax này.

Hơn thế nữa, nếu bạn kích hoạt cài đặt WooCommerce để chuyển hướng người sử dụng đến giỏ hàng sau khi thêm bất kỳ sản phẩm vào giỏ hàng, có nghĩa nó được chuyển hướng vào trang giỏ hàng, vì thế chức năng Ajax Cart Fragments là khá vô nghĩa.

Trong phần WooCommerce > Settings > Products > General có option để bạn vô hiệu hóa tính năng Ajax add to cart  và để cấp phép chuyển hướng đến trang giỏ hàng. Điều này sẽ luôn luôn buộc tải lại trang và do kia sẽ dành dụm cho người sử dụng một cuộc gọi Ajax chẳng cần thiết để cập nhật lại giỏ hàng.

Ý tưởng hay là, chỉ kích hoạt nơi duy nhất mà “ /
wc-ajax=get_refreshed_fragments
” nên chạy là trang và WooCommerce archives nơi khách hàng của bạn cũng có thể thêm vào giỏ hàng và bạn muốn sử dụng một tiện ích giỏ hàng động

Ví dụ, nếu bạn thêm nút Add to cart trên các trang category và bạn muốn widget giỏ hàng có thể tự động cập nhật mà chẳng cần tải lại trang , bây giờ bạn sẽ cần hoạt động  /wc-ajax=get_refreshed_fragments .

Bên cạnh đó, trên trang giỏ hàng bạn có thể thay đổi con số hoặc xoá các mục mà không nên làm mới trang, và trong đó bạn cũng muốn widget giỏ hàng có thể cập nhật theo (nhưng câu hỏi thực thụ ở đây là: tại sao có 1 widget giỏ hàng trên trang giỏ vì nó không có ý nghĩa
). Vì vậy, trên trang giỏ hàng bạn cũng cần “/wc-ajax=get_refreshed_fragments” hoạt động, hoặc widget sẽ không cập nhật nếu bạn cập nhật giỏ hàng.

Tóm lại:

  1. Nếu giao diện WordPress của bạn không có widget cart, bạn cũng có thể có thể tắt “/wc-ajax=get_refreshed_fragments”
  2. Nếu theme của bạn có hiển thị widget giỏ hàng động, nhưng bạn không đoái hoài đến hiển thị nội dung giỏ hàng , bạn cũng cũng có thể tắt “/wc-ajax=get_refreshed_fragments”.
  3. Nếu bạn mong muốn giữ lại các chức năng widget giỏ hàng, bạn nên vô hiệu hóa “/wc-ajax=get_refreshed_fragments” CHỈ trên các trang không có chức năng Ajax add to cart (WooCommerce Product archives) hoặc chức năng cập nhật giỏ hàng (ở trang giỏ hàng)

Vô hiệu hóa WooCommerce Ajax Cart Fragments

Như vậy bạn đã biết Cart Fragments là gì và tại sao hay lúc nào nó cần được loại bỏ, kế đến chúng ta sẽ thêm vô 1 vài đoạn code.

Tất nhiên, có plugin cho bạn làm điều này – nhưng bạn hoàn toàn cũng có thể có thể tắt chức năng này với một vài dòng PHP thì biện pháp này luôn là tối ưu.

Nhưng trước tiên, chúng ta hãy xem bằng cách nào WooCommerce thêm lời gọi Ajax này.

Nhận thấy, script  “ wc-cart-fragments ” được thêm bởi một hàm gọi là “register_scripts()” . Đó là một file JS từ thư mục /assets và yêu cầu thư viện jQuery và cookie:

 'wc-cart-fragments' =>  array( 'src' =>  self::get_asset_url( 'assets/js/frontend/cart-fragments' . $suffix . '.js' ), 'deps' =>  array( 'jquery', 'js-cookie' ), 'version' =>  WC_VERSION, ),  

Và sau đó script này được thêm vào trang:

self::enqueue_script( 'wc-cart-fragments' );

Để ý hàm “enqueue_script()” bạn có thể thấy script  “ wc-cart-fragments ” được đăng ký trước và sau đó sử dụng enqueued lên HTML document:

 private static function enqueue_script( $handle, $path = '', $deps = array( 'jquery' ), $version = WC_VERSION, $in_footer = true ) { if ( ! in_array( $handle, self::$scripts, true ) && $path ) { self::register_script( $handle, $path, $deps, $version, $in_footer ); } wp_enqueue_script( $handle ); }  

Cũng tựa như như hàm add_action() và remove_action(). Xem thêm hướng dẫn tạo Action và filter hooks trong wordpress.

Bạn phải chắc chắn gọi hàm “dequeue” sau “enqueue”, vì theo mặc định nó được enqueue ở địa thế ưu ái 10, chúng ta chỉ cần cộng thêm 1 để chắc chắn có thể xóa script.

 /** * @snippet Disable WooCommerce Ajax Cart Fragments Everywhere * @how-to Get CustomizeWoo.com FREE * @author Rodolfo Melogli * @compatible WooCommerce 3.6.4 * @donate $9 https://khoahocwordpress.com/bloomer-armada/ */ add_action( 'wp_enqueue_scripts', 'bbloomer_disable_woocommerce_cart_fragments', 11 ); function bbloomer_disable_woocommerce_cart_fragments() { wp_dequeue_script( 'wc-cart-fragments' ); }  

Xin lưu ý rằng trong tình huống bạn có một widget giỏ hàng ở vùng header, nó sẽ phá vỡ “dropdown cart” . Bạn vẫn sẽ cũng đều có thể nhìn thấy số lượng mặt hàng và tổng giá trị trong giỏ hàng, nhưng khi hover, bạn sẽ không thu được các mục và nút cart/checkout.

Trên thực tế, mình muốn vô hiệu hóa widget giỏ hàng để tập trung sử dụng chức năng này.

Trong trường hợp bạn muốn tối ưu hóa trang web chỉ xuất hiện ở trang chủ và loại bỏ “wc-cart-fragments” trên các trang khác, bạn có thể sử dụng đoạn mã sau:

 /** * @snippet Disable WooCommerce Ajax Cart Fragments On Static Homepage * @how-to Get CustomizeWoo.com FREE * @author Rodolfo Melogli * @compatible WooCommerce 3.6.4 * @donate $9 https://khoahocwordpress.com/bloomer-armada/ */ add_action( 'wp_enqueue_scripts', 'bbloomer_disable_woocommerce_cart_fragments', 11 ); function bbloomer_disable_woocommerce_cart_fragments() { if ( is_front_page() ) wp_dequeue_script( 'wc-cart-fragments' ); }  

Kết luận

Chúng ta đã thấy rằng việc tắt Ajax Cart Fragments “có thể” giúp cải thiện tốc độ trang web, hơn nữa cũng cũng có thể có thể là nguyên do cho 1 số vấn đề, như bạn mong muốn tiếp tục sử dụng drop-down Cart widget.

Nếu bạn có bất kỳ câu hỏi nào muốn chia sẻ với chúng tôi, xin để lại bình luận dưới bài viết này.

Hãy cho mình biết suy nghĩ của bạn trong phần bình luận bên dưới bài viết này. Hãy theo dõi kênh chia sẻ kiến thức WordPress của TopVn trên Twitter và Facebook

Bài viết WooCommerce: Tắt Ajax Cart Fragments & tại sao không nên dùng được tổng hợp và biên tập bởi: dinhthuanit.com. Mọi ý kiến đóng góp và phản hồi vui lòng gửi Liên Hệ cho dinhthuanit.com để điều chỉnh. dinhthuanit.com xin cảm ơn.

Bài Viết Liên Quan


Bài Viết Khác


Quảng cáo
Ads_ngang