رفع کندی پیشخوان وردپرس با غیرفعال کردن Command Palette
اگر هنگام کار با پیشخوان وردپرس احساس می کنید صفحات مدیریت خیلی دیر باز می شوند اما سرعت نمایش سایت برای کاربران عادی کاملا مناسب است ممکن است مشکل از یکی از فرایندهای داخلی وردپرس باشد.
من اخیرا با چنین مشکلی در یکی از سایت های وردپرسی خودم مواجه شدم و تمام بخش های پیشخوان از داشبورد گرفته تا افزونه ها و تنظیمات با تأخیر زیادی باز می شدند در حالی که سایت از سمت کاربران بدون مشکل و با سرعت مناسبی بارگذاری می شد.
در ابتدا احتمال می دادم یکی از افزونه ها باعث این مشکل شده باشد اما بررسی های فنی نتیجه متفاوتی داشت.
بررسی علت کندی پیشخوان وردپرس
برای پیدا کردن عامل اصلی زمان اجرای بخش های مختلف وردپرس را بررسی کردم و همچنین با استفاده از ابزار Query Monitor متوجه شدم زمان اجرای کوئری های دیتابیس بسیار پایین است و دیتابیس عامل این تأخیر نیست.
در ادامه با استفاده از یک ابزار ساده برای اندازه گیری زمان اجرای توابع وردپرس متوجه شدم یکی از توابع هسته وردپرس زمان بسیار زیادی مصرف میکند :
wp_enqueue_command_palette_assets
این تابع مربوط به قابلیت Command Palette وردپرس است قابلیتی که امکان جست و جوی سریع و دسترسی به بخش های مختلف پیشخوان را فراهم می کند.
نکته جالب این بود که اجرای همین یک تابع بیش از ۱۳ ثانیه از زمان بارگذاری پیشخوان را به خودش اختصاص می داد!
راه حل غیرفعال کردن Command Palette
از آنجایی که من شخصا از قابلیت Command Palette استفاده نمی کنم تصمیم گرفتم برای آزمایش اجرای این تابع را در پیشخوان غیر فعال کنم.
برای این کار کافی است کد زیر را به فایل function.php سایت خود اضافه کنید:
add_action('admin_init', function () {
remove_action(
'admin_enqueue_scripts',
'wp_enqueue_command_palette_assets',
10
);
}, PHP_INT_MAX);
این کد باعث می شود تابع مورد نظر پیش از اجرای هوک admin_enqueue_scripts از فهرست توابع اجرایی وردپرس حذف شود.
روش پیشنهادی من : برای اینکه این تغییر با غیرفعال شدن یا به روزرسانی افزونه های معمولی از بین نرود می توانید آن را در یک افزونه اختصاصی قرار دهید یا از پوشه wp-content/mu-plugins استفاده کنید.
نتیجه قبل و بعد از غیرفعال سازی
برای اطمینان از تأثیر این تغییر، زمان اجرای پیشخوان را قبل و بعد از غیرفعال کردن تابع اندازه گیری کردم.
قبل از غیر فعال سازی حدود ۱۴ ثانیه
بعد از غیر فعال سازی کمتر از ۱ ثانیه
برای مقایسه دقیق تر زمان اجرای هوک admin_enqueue_scripts نیز از حدود ۱۳٫۱۴ ثانیه به ۰٫۰۳۶ ثانیه کاهش پیدا کرد.
این نتیجه نشان داد که در سایت من بخش عمده کندی پیشخوان به اجرای همین تابع مربوط بوده است.
آیا غیرفعال کردن Command Palette مشکلی ایجاد می کند؟
خیر اگر از این قابلیت استفاده نمی کنید غیرفعال کردن آن اختلالی در عملکرد اصلی وردپرس ایجاد نمی کند.
با این تغییر:
منو های مدیریت وردپرس همچنان در دسترس هستند.
مدیریت نوشته ها ، برگه ها و محصولات بدون تغییر کار می کند.
ووکامرس و سایر افزونه ها به فعالیت خود ادامه می دهند.
سایت و بخش نمایش عمومی آن تغییری نمی کنند.
فقط قابلیت Command Palette و دسترسی سریع آن غیرفعال می شود. در حقیقت همان قابلیت جستجوی سریع در پیشخوان غیر فعال میشود
اگر هنگام بررسی سرعت پیشخوان وردپرس با خطاهایی مثل تأخیر در ارتباط با سرور یا خطای زمان بر بودن درخواست های داخلی مواجه شده اید پیشنهاد می کنم راهنمای رفع خطای API: cURL error 28 در وردپرس را هم مطالعه کنید.
حرف آخر
اگر پیشخوان وردپرس شما به شکل غیر عادی کند است در حالی که سایت از سمت کاربران سرعت مناسبی دارد بررسی توابع اجرایی بخش مدیریت می تواند به پیدا کردن علت اصلی کمک کند.
البته این راهکار لزوما برای تمام سایت های وردپرسی مناسب نیست چون ممکن است کندی پیشخوان در سایت شما علت دیگری داشته باشد. اما اگر تابع wp_enqueue_command_palette_assets زمان زیادی مصرف می کند و از Command Palette استفاده نمی کنید غیرفعال کردن آن می تواند راه حل ساده و مؤثری باشد.
این مطلب بر اساس یک مشکل واقعی ، بررسی زمان اجرای توابع و تست عملی روی سایت خودم نوشته شده است





