یکی از امکاناتی که افزونه ووکامرس در وردپرس به شما ارائه می کند، عملیات های خودکار یا به اصطلاح آجاکس - Ajax به نام WooCommerce Cart Fragments است که این قابلیت ها گاهی اوقات با ترکیب شدن سایر دستورات یک قالب، باعث سنگین شدن سایت و حتی لودینگ بسیار کند سایت می شود که در چنین مواقعی اگر نتوانید بهینه سازی مناسبی برای کدهایتان انجام دهید، به ناچار باید این قابلیت را غیرفعال کنید. در این تاپیک از انجمن بی تاک قصد داریم روش های غیرفعال کردن این قابلیت را به شما آموزش دهیم.

این قابلیت از ووکامرس معمولا آدرس هایی به این صورت:
https://domain.com/?wc-ajax=get_refreshed_fragments
یا کدهایی به این صورت در سایتتان ایجاد می کند:
<script type='text/javascript'>
/* <![CDATA[ */
Var wc_add_to_cart_params = {"ajax_url":"\/wp-admin\/admin-ajax.php","wc_ajax_url":"\/?wc-ajax=%%endpoint%%","i18n_view_cart":"View Cart","cart_url":"http:\/\/localhost\/shop\/cart\/","is_cart":"","cart_redirect_after_add":"yes"};
/* ]]> */
</script>
که همین موارد باعث فراخونی مداوم آجاکس و در نهایت کند شدن سایتتان می شوند.
نصب افزونه Disable Cart Fragments by Optimocha
یکی از روش های ساده و سریع برای انجام اینکار، نصب افزونه Disable Cart Fragments by Optimocha در وردپرس است که بطور خودکار می تواند تمامی ردپای این قابلیت را از سایت شما پاکسازی کند. این افزونه بطور کاملا رایگان در مخزن وردپرس در دسترس است:
https://wordpress.org/plugins/disable-cart-fragments/
غیرفعال کردن بدون نیاز به افزونه
در این روش شما باید کد زیر را در فایل functions.php
قالبتان قرار دهید تا این قابلیت در سایت شما غیرفعال شود:
add_action( 'wp_enqueue_scripts', 'betalk_dequeue_woocommerce_cart_fragments', 11);
function betalk_dequeue_woocommerce_cart_fragments() { if (is_front_page() || is_single()) wp_dequeue_script('wc-cart-fragments'); }
سپس به “پیشخوان > ووکامرس > پیکربندی” بروید، از تب “محصولات” گزینه ی “انتقال به برگه سبدخرید بعد از افزودن به سبد” را فعال کنید.
کمی افزایش سرعت بیشتر!
با انجام مرحله قبل این قابلیت بطور کامل غیرفعال شده است اما اگر قصد دارید کمی بیشتر سرعت سایت خود را افزایش دهید و استایل ها و جاوا اسکریپت های پیش فرض ووکامرس را هم از سایت خود حذف کنید و اجازه دهید تمامی استایل ها و جاوااسکریپت ها از خود قالبتان خوانده و اجرا شود، این کد را نیز به functions.php
قالبتان اضافه کنید:
add_action( 'wp_enqueue_scripts', 'dequeue_woocommerce_styles_scripts', 99 );
function dequeue_woocommerce_styles_scripts() {
if ( function_exists( 'is_woocommerce' ) ) {
if ( ! is_woocommerce() && ! is_cart() && ! is_checkout() ) {
# Styles
wp_dequeue_style( 'woocommerce-general' );
wp_dequeue_style( 'woocommerce-layout' );
wp_dequeue_style( 'woocommerce-smallscreen' );
wp_dequeue_style( 'woocommerce_frontend_styles' );
wp_dequeue_style( 'woocommerce_fancybox_styles' );
wp_dequeue_style( 'woocommerce_chosen_styles' );
wp_dequeue_style( 'woocommerce_prettyPhoto_css' );
# Scripts
wp_dequeue_script( 'wc_price_slider' );
wp_dequeue_script( 'wc-single-product' );
wp_dequeue_script( 'wc-add-to-cart' );
wp_dequeue_script( 'wc-cart-fragments' );
wp_dequeue_script( 'wc-checkout' );
wp_dequeue_script( 'wc-add-to-cart-variation' );
wp_dequeue_script( 'wc-single-product' );
wp_dequeue_script( 'wc-cart' );
wp_dequeue_script( 'wc-chosen' );
wp_dequeue_script( 'woocommerce' );
wp_dequeue_script( 'prettyPhoto' );
wp_dequeue_script( 'prettyPhoto-init' );
wp_dequeue_script( 'jquery-blockui' );
wp_dequeue_script( 'jquery-placeholder' );
wp_dequeue_script( 'fancybox' );
wp_dequeue_script( 'jqueryui' );
}
}
}