حذف خودکار سفارشات لغو شده،درحال پردازش و ناموفق بعد از مدت زمان مشخص

woocommerce-auto-delete-failed-orders

حذف خودکار سفارشات – گزارشی از سمت یکی از کاربران برای ما ارسال شده است که : یکی از درگاه های پرداختی که من در سایت استفاده می کنم هر زمان که سفارش و پرداخت انجام نشود یا کاربر بتواند سفارش را لغو کند ، وضعیت سفارش را از حالت “پردازش” به “ناموفق” تغییر می دهد. مسلئه اینجاست هنگامی که مشتری بعداً سعی در پرداخت همان سفارش ناموفق میکند ، درگاه پرداخت خطای “شناسه سفارش تکراری” را نمایش می دهد. بنابراین برای جلوگیری از این مسئله می خواهم سفارشات ناموفق را به صورت خودکار حذف نمایم.

 

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

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

 

برای اینکار کد زیر را به فایل 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', 'pending')) ) {
        $order_date = $order->get_date_created();
        $current_time = current_time( 'timestamp' );
        $delete_after_minutes = 10; // 10 دقیقه

        // محاسبه زمان گذشته شده از زمان ایجاد سفارش به دقیقه
        $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 ); // حذف سفارش
        }
    }
}

نکته : کاربرانی که از محصولات ماهدیس وب استفاده می کنند، باید این کد را به فایل myfunctions اضافه کنند.

 

 

بیشتر بخوانید : تکمیل شدن سفارشات به صورت خودکار در ووکامرس

دیدگاه کاربران
  • مجتبی ۱۹ آذر ۱۴۰۲

    سلام اگر بخواهیم بعد از همین 10 دقیقه سفارشات در حال پرداخت به لغو شده تغییر کنه چه جوری باید کد رو تغییر بدیم .

    • ماهدیس وب ۱۹ آذر ۱۴۰۲

      با سلام
      می توانید وضعیت ‘on-hold’ را نیز به حالت های بالا اضافه کنید

      • علی ۲۲ فروردین ۱۴۰۳

        امکانش بصورت کامل کدشو تو کامنت بذارین یا پست رو آپدیت کنین ممنون

      • ماهدیس وب ۲۲ فروردین ۱۴۰۳

        سلام
        خط 5 رو به صورت زیر تغییر بنویسید

        if ( in_array($order_status, array('cancelled', 'failed', 'pending', 'pending', 'on-hold') ) ){ 
        
ارسال دیدگاه

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

کد امنیتی Time limit is exhausted. Please reload CAPTCHA.