
یکی از مواردی که در ووکامرس وجود داره در بخش اقدامات برنامهریزی شده یا همون Scheduled Actions تعداد زیادی اقدامات در وضعیتهای مختلف ailed , canceled, pending یا complete وجود دارد که اگر آنها را پاکسازی نکنیم حجم زیادی دیتا در جداول دیتابیس خواهد ماند که علاوه بر گرفتن فضا دیتابیس و شلوغی آن در بعضی موارد باعث کاهش سرعت عملکرد سایت بخصوص در زمان بروزرسانی دیتابیس ووکامرس بعد از آپدیت میگردد.
برای جلوگیری از این اتقاق بهتر از هر از چند مدت اطلاعات این بخش را به صورت کامل حذف نماییم، البته در نسخههای جدید ووکامرس پس از هر 30 روز مواردی که در وضعیت complete را به صورت خودکار حذف میکند.
اگر نمیدانید این بخش در کجا قرار دارد میتوانید این مسیر را طی کنید: ووکامرس ← وضعیت ← Scheduled Action
حال چطور دادههای Scheduled Actions را حذف کنیم؟
برای حذف این داده بهترین روش این است که در کنترل پنل هاست خود به بخش PHPMyAdmin بروید روی دیتابیس مورد نظر کلیک کنید. در سمت راست به تب SQL بروید. کد زیر را وارد کرده و بر روی دکمه Go بزنید با این کار تمام دادههای وضعیتهای مشخص شده را حذف میکند. شما میتوانید وضعیتهای مورد نظر خود را فقط قرار دهید.
DELETE FROM `wp_actionscheduler_actions` WHERE `status` IN ('complete','failed','canceled')
یا با استفاده دستور زیر میتوانید کل دادههای موجود در جدول را خذف نمایید:
TRUNCATE ` wp_actionscheduler_logs `
نکته 1: نکتهای که وجود دارد ما وضعیت pending را قرار ندادیم اگر سایت شما به هر دلیلی به مشکل خورده است میتوانید اقدامات و داده موجود در این وضعیت را نیز حذف کنید. اگر هم مواردی در وضعیت pending هستند میتوانید به صورت دستی آنها را اجرا کرده تا به لیست complete بروند.
نکته 2: ما از پیشوند دیتابیس جداول وردپرس (wp_) استفاده کردهایم، در صورتی که پیشوند نام دیتابیس شما متقاوت است آن را وارد کنید.
تغییر زمان حذف خودکار اقدامات تکمیل شده
همان طور که گفتم پس از هر 30 روز لیست اقدامات در وضعیت complete حذف می شود اما اگر خواستید این مدت زمان را سفارشی کنید کافی کد زیر را در فایل functions.php قالب خود قرار دهید و مدت زمان دلخواه را قرار دهید.
add_filter( 'action_scheduler_retention_period', 'wpb_action_scheduler_purge' ); /** * Change Action Scheduler default purge to 1 week */ function wpb_action_scheduler_purge() { return WEEK_IN_SECONDS; }
امیدوارم این آموزش کوتاه براتون مفید و کاربردی واقع بشه. 🙂
رونیا
15 مهر 1402 - 12:08خیلی عالی بود