رفع مشکل wc-ajax=get_refreshed_fragments در ووکامرس
WooCommerce یکی از افزونه های محبوب برای تبدیل سایت وردپرسی به یک فروشگاه آنلاین است. امروزه افزودنی ها و پوسته های زیادی با ووکامرس سازگار هستند که می توان در اینترنت آنها را مشاهده نمود. اخیراً مشاهده شده است که برخی کاربران از سرعت پایین لود سایت خود گلایه دارند و در گزارش آنالیز سایت با ابزارهای آنلاین همچون gtmetrix، با مشکل"wc-ajax=get_refreshed_fragments" مواجه می شوند که به طور متوسط باعث می شود یک ثانیه سایت دیرتر لود شود. پس از تجزیه و تحلیل بیشتر مشخص گردید که بارگیری صفحات سایت در اکثر موارد 5 تا 10 ثانیه طول می کشد.
wc-ajax=get_refreshed_fragments چیست؟
اساساً WooCommerce سعی می کند با فراخوانی اسکریپت جزئیات سبد خرید را جمع آوری کند و برای انجام این کار زمان زیادی لازم است.
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>
چگونه می توان مشکل wc-ajax=get_refreshed_fragments را رفع کرد؟
روش اول:در پنل مدیریت وردپرس، به بخش "نمایش> ویرایشگر پوسته" بروید و فایل functions.php را پیدا کنید. کد زیر را در انتهای پرونده (شماره1) اضافه کنید. سپس بر روی "بروز رسانی پرونده" (شماره2) کلیک نمایید.
/** Disable Ajax Call from WooCommerce */
add_action( 'wp_enqueue_scripts', 'dequeue_woocommerce_cart_fragments', 11);
function dequeue_woocommerce_cart_fragments() { if (is_front_page()) wp_dequeue_script('wc-cart-fragments'); }

تصویر(1)
روش دوم:اگر می خواهید از FTP استفاده کنید، با استفاده از حساب FTP هاست خود وارد مسیر "/ wp-content / your-theme /" شوید (your-theme نام پوسته سایت شما است) و پرونده "functions.php" را پیدا کنید. کد فوق را در انتهای پرونده ویرایش و اضافه کنید. در نهایت فایل اصلاح شده را دوباره در هاست بارگذاری کنید.
پس از به روزرسانی پرونده، به منوی "ووکامرس>پیکربندی" بروید و بر روی تب "محصولات" کلیک کنید. مطابق با تصویر زیر گزینه "انتقال به برگه سبد خرید بعد از «افزودن به سبد»" را فعال نمایید.

تصویر(2)
کد بالا مشکل بروزرسانی سبد خرید را فقط در صفحه اول استاتیک غیرفعال می کند. اگر می خواهید این مورد را در همه پست ها غیرفعال کنید، پیشنهاد می شود کد زیر را در پرونده function.php پوسته خود اضافه کنید.
/** Disable Ajax Call from WooCommerce on front page and posts*/
add_action( 'wp_enqueue_scripts', 'dequeue_woocommerce_cart_fragments', 11);
function dequeue_woocommerce_cart_fragments() {
if (is_front_page() || is_single() ) wp_dequeue_script('wc-cart-fragments');
}
روش سوم: اگر نگران تغییر در پرونده تم یا دسترسی به هاست هستید، می توانید از پلاگین رایگان برای اینکار استفاده کنید. افزونه “Disable Cart Fragment” را از پنل مدیریت وردپرس خود نصب و فعال کنید.
این افزونه هیچ صفحه تنظیماتی ندارد. با فعال سازی ساده افزونه، مشکل wc-ajax=get_refreshed_fragments ووکامرس در تمام صفحات سایت غیرفعال می شود. اگر می خواهید اسکریپت را فقط در صفحات خاص غیرفعال کنید، کد زیر را در پرونده wp-config.php خود اضافه کنید.
define('DISABLE_CART_FRAGMENTS', 'ID-1,ID-2,ID-3');
ID-1 ، ID-2 و ID-3 شناسه های پست یا صفحه هستند.