سلطان وب
سبد خرید
خانه | آموزش ووکامرس | آموزش حذف خودکار سفارشات ناموفق در ووکامرس

آموزش حذف خودکار سفارشات ناموفق در ووکامرس

آموزش حذف خودکار سفارشات ناموفق در ووکامرس

آموزش حذف خودکار سفارشات ناموفق در ووکامرس

ممکن است سفارشاتی به دلایل مختلف مانند عدم پرداخت توسط مشتری یا مشکل در درگاه پرداخت ، به صورت ناموفق یا معطل باقی بمانند. این سفارشات نه تنها فضای دیتابیس را اشغال می‌کنند بلکه میتوانند باعث کندی و ناکارآمدی سیستم شوند. در این آموزش روشی برای حذف خودکار این نوع سفارشات بعد از مدت زمان مشخص ارائه خواهم کرد تا این چالش را در فروشگاه اینترنتی خود حل کنید.


حذف خودکار سفارشات ناموفق در ووکامرس

جهت حذف انواع سفارشات ناموفق میتوانید به چند روش اقدام کنید که در ادامه هر یک را بصورت کامل توضیح خواهم داد. لطفا توجه داشته باشید که ابتدا این آموزش را بصورت کامل مشاهده کنید و سپس نسبت به تغییرات اقدام کنید. همچنین پیشنهاد میشود قبل از هرگونه تغییر در تنظیمات سایت یا استفاده از کدها و افزونه ها ؛ نسبت به تهیه فول بکاپ از سایتتون اقدام کنید.

  1. حذف خودکار سفارشات ناموفق در ووکامرس از طریق تنظیمات ووکامرس
  2. حذف خودکار سفارشات ناموفق با استفاده از کدنویسی
  3. حذف خودکار سفارشات ناموفق با استفاده از افزونه

حذف خودکار سفارشات ناموفق در ووکامرس از طریق تنظیمات ووکامرس

در نسخه‌ های جدیدتر ووکامرس میتوانید از تنظیمات پیش‌فرض برای حذف خودکار سفارشات ناموفق بعد از مدت مشخصی استفاده کنید. برای انجام این کار به مسیر پیکربندی ووکامرس > حفظ حریم خصوصی حساب‌های کاربری > حفظ اطلاعات شخصی بروید. کافیست کمی به سمت انتهای صفحه اسکرول کنید تا تنظیمات را مشاهده کنید. در این بخش همانند تصویر زیر ، آیتم های مختلفی جهت تنظیم وجود دارد که به دلخواه میتوانید نسبت به تنظیم هر یک اقدام کنید.

آموزش حذف خودکار سفارشات ناموفق در ووکامرس

به عنوان مثال شما میتوانید طبق تصویر بالا تنظیماتی را جهت حفظ سفارشات در انتظار ، حفظ سفارش‌های ناموفق ، نگه داشتن سفارش‌های ناموفق و حفظ سفارشات کامل شده میتوانید انجام دهید. درصورتیکه کادر روبروی هر یک را خالی رها کنید ، هیچگونه تنظیماتی اعمال نخواهد شد. همچنین شما میتوانید مدت زمان مدنظرتان را بر اساس روز ، هفته ، ماه و سال درج کنید.


حذف خودکار سفارشات ناموفق با استفاده از کدنویسی

برای انجام این کار از یک کد PHP در فایل functions.php قالب وردپرس خود استفاده خواهیم کرد. این کد وضعیت هر سفارش را بررسی میکند و اگر سفارش در یکی از وضعیت‌های ناموفق یا معطل مانند پرداخت ناموفق یا در انتظار پرداخت برای مدت زمان مشخصی مثلاً 1 ساعت باقی مانده باشد ، آنرا به صورت خودکار حذف میکند.

فایل functions.php را در قالب وردپرس خود پیدا کنید. این فایل معمولاً در مسیر /wp-content/themes/<نام-پوشه-قالب>/functions.php قرار دارد. سپس کد زیر را به انتهای فایل functions.php اضافه کنید.

add_action( 'woocommerce_order_status_changed', 'mweb_auto_delete_orders', 10, 4 );
function mweb_auto_delete_orders( $order_id, $old_status, $new_status, $order ) {
if ( in_array( $new_status, array( 'cancelled', 'failed', 'pending' ) ) ) {
$order_date = $order->get_date_created();
$current_time = current_time( 'timestamp' );
$delete_after_minutes = 60; // 1 ساعت
$time_diff = absint( ( $current_time - strtotime( $order_date->date( 'Y-m-d H:i:s' ) ) ) / 60 );
if ( $time_diff >= $delete_after_minutes ) {
wp_delete_post( $order_id, true ); // حذف سفارش
}
}
}
  1. در کد بالا $delete_after_minutes تعداد دقایقی را که میخواهید بعد از آن سفارشات ناموفق حذف شوند را تعیین می‌کند. شما میتوانید این مقدار را به دلخواه خود تغییر دهید.
  2. این کد فقط سفارشاتی را حذف میکند که وضعیت آنها به یکی از وضعیت‌ های لغو شده ، ناموفق یا در انتظار پرداخت تغییر کرده باشد.
  3. اگر میخواهید سفارشات را از وضعیت‌ های دیگری حذف کنید ، میتوانید لیست $new_status را در کد بروز رسانی کنید.
  4. با استفاده از این روش، می‌توانید به طور خودکار سفارشات ناموفق و معطل را در ووکامرس بعد از مدت زمان مشخصی حذف کنید. این کار به شما کمک می‌کند تا فضای دیتابیس خود را آزاد کرده و کارایی سیستم را افزایش دهید.

درصورتیکه کد بالا برای شما عملکرد مناسبی نداشت ، میتوانید از کد زیر طبق توضیحات بالا استفاده کنید. کد زیر نیز همانند کد بالا عمل خواهد کرد.

function update_order_status( $order_id ) {
$order = new WC_Order( $order_id );
$order_status = $order->get_status();
if ('cancelled' == $order_status || 'failed' == $order_status ||   'pending' == $order_status ) { 
        $current_time = date('h:i:s');    
        sleep(600);       //   برابر با 10 دقیقه
       wp_delete_post($order_id,true);    
   }    
}

 

درصورتیکه کد بالا برای شما عملکرد مناسبی نداشت ، میتوانید از کد زیر طبق توضیحات بالا استفاده کنید. کد زیر نیز همانند کد بالا عمل خواهد کرد.

ابتدا نیاز هست که افزونه “Code Snippets” را در وردپرس نصب کنید. این افزونه به شما اجازه میدهد تا کدهای سفارشی را به سایت خود اضافه کنید. سپس به بخش “Code Snippets” در داشبورد وردپرس بروید و بر روی “Add New” کلیک کنید. حالا در فیلد “Code” ، کد زیر را قرار دهید. سپس بر روی “Save Changes and Activate” برای ذخیره کد و فعالسازی آن کلیک کنید.

function delete_failed_orders() {
    // مشخص کردن تعداد روزهای مورد نیاز برای حذف سفارشات ناموفق
    $days = 30;

    // محاسبه تاریخ مورد نیاز برای حذف سفارشات
    $date = date('Y-m-d H:i:s', strtotime('-' . $days . ' days'));

    // دریافت لیست سفارشات ناموفق
    $args = array(
        'post_type'      => 'shop_order',
        'post_status'    => 'wc-failed',
        'posts_per_page' => -1,
        'date_query'     => array(
            'before' => $date,
        ),
    );

    $failed_orders = get_posts($args);

    // حذف سفارشات ناموفق
    foreach ($failed_orders as $order) {
        wp_delete_post($order->ID, true);
    }
}

add_action('wp', 'schedule_delete_failed_orders');
function schedule_delete_failed_orders() {
    if (!wp_next_scheduled('delete_failed_orders_event')) {
        wp_schedule_event(time(), 'daily', 'delete_failed_orders_event');
    }
}

add_action('delete_failed_orders_event', 'delete_failed_orders');

این کد سفارشات ناموفق را بعد از 30 روز از تاریخ ایجاد آنها حذف میکند. همچنین با استفاده از هوک cron ، کد مربوطه را به صورت روزانه اجرا میکند.


نتیجه گیری

در این مطلب سعی کردم نحوه حذف خوکار سفارشات ناموفق در سفارش ووکامرس رو بهتون آموزش بدم تا بتونید به راحتی این مشکل را در سایتتون رفع کنید و نیازی به صرف هزینه در این زمینه نداشته باشید.

امیدوارم این آموزش برای شما مفید بوده باشد و بتونید به خوبی از این آموزش استفاده کنید. پیشنهاد میکنم سایر مطالب در زمینه آموزش ووکامرس را در وبلاگ من مشاهده کنید. اگر سوال یا ابهامی در رابطه با آموزش داشتید حتما در بخش دیدگاه‌ها اعلام کنید تا در کمترین زمان ممکن پاسخگوی شما باشم. موفق باشید

دیدگاه ها

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

نه + سیزده =