افزونه WooCommerce یکی از پراستفاده ترین ابزارها برای ساخت فروشگاه اینترنتی با وردپرس است. امروزه قالب ها و افزونه های متعددی با ووکامرس سازگاری دارند که در سطح وب در دسترس هستند. اما بسیاری از کاربران گزارش دادهاند که سرعت بارگذاری وب سایت آن ها کاهش یافته و در گزارش هایی که از ابزارهایی نظیر GTmetrix دریافت می کنند، خطایی با عنوان wc-ajax=get_refreshed_fragments مشاهده میشود. این درخواست معمولاً به طور میانگین موجب تأخیر یک ثانیه ای در بارگذاری صفحات می گردد و در بررسی دقیق تر مشخص شده که در مواردی زمان بارگذاری سایت حتی تا 5 یا 10 ثانیه هم افزایش می یابد.
wc-ajax=get_refreshed_fragments چیست و چه نقشی دارد؟
در ووکامرس، اسکریپتی با نام wc-ajax=get_refreshed_fragments برای بروزرسانی محتوای سبد خرید به صورت خودکار در تمام صفحات اجرا میشود. وظیفه اصلی این اسکریپت، بررسی و تازه سازی اطلاعات سبد خرید کاربر در پس زمینه است. با این حال، این عملیات حتی در صفحاتی مانند "تماس با ما"، "درباره ما" و یا نوشته های بلاگ نیز صورت میگیرد؛ صفحاتی که اصولاً نیازی به نمایش سبد خرید ندارند. این موضوع باعث افزایش زمان بارگذاری و کندی سایت خواهد شد. زمانی که کدهای HTML صفحات سایت را بررسی کنید، معمولاً قطعه کدی مشابه زیر را مشاهده خواهید کرد:
<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 از پیشخوان وردپرس
برای شروع، از پنل مدیریت وردپرس به بخش نمایش > ویرایشگر پوسته مراجعه کنید. سپس فایل functions.php مربوط به قالب فعال را باز کرده و قطعه کد زیر را در انتهای آن قرار دهید:
/** غیرفعالسازی Ajax سبد خرید ووکامرس در صفحه اصلی */ 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'); }
پس از ذخیره تغییرات، به مسیر ووکامرس > پیکربندی > محصولات رفته و گزینهای با عنوان "انتقال به برگه سبد خرید بعد از افزودن به سبد خرید" را فعال نمایید.
روش دوم: ویرایش فایل functions.php از طریق FTP
در صورتی که ترجیح میدهید از FTP استفاده کنید، وارد پوشه /wp-content/themes/your-theme/ شوید (جایگزین your-theme با نام پوسته شما) و فایل functions.php را ویرایش نمایید. همانند روش قبل، کد بالا را به انتهای فایل اضافه و آن را ذخیره کنید.
اگر قصد دارید این اسکریپت را نهفقط در صفحه اول، بلکه در تمام پستها هم غیرفعال کنید، میتوانید نسخه زیر را جایگزین کنید:
/** غیرفعالسازی Ajax در صفحه اصلی و پستها */ 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 Fragments
اگر به روزرسانی دستی فایل ها برایتان دشوار است یا به پنل هاست دسترسی ندارید، می توانید از افزونه رایگان Disable Cart Fragments استفاده کنید. کافی است افزونه را از مخزن وردپرس نصب و فعال نمایید. این پلاگین هیچ بخش تنظیماتی ندارد و بلافاصله پس از فعال سازی، عملکرد اسکریپت wc-cart-fragments را متوقف می کند.
اگر تنها می خواهید این ویژگی را در برخی صفحات خاص غیرفعال کنید، می توانید از دستور زیر در فایل wp-config.php استفاده کنید:
define('DISABLE_CART_FRAGMENTS', 'ID-1,ID-2,ID-3');
در اینجا ID-1, ID-2, و ID-3 شناسه های صفحات یا نوشته هایی هستند که می خواهید اسکریپت در آنها غیرفعال باشد.