سبد خرید
خانه | آموزش ووکامرس | انتقال سفارشات در انتظار پرداخت به لغو شده در ووکامرس

انتقال سفارشات در انتظار پرداخت به لغو شده در ووکامرس

انتقال سفارشات در انتظار پرداخت به لغو شده در ووکامرس

انتقال سفارشات در انتظار پرداخت به لغو شده در ووکامرس

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

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

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

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

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


انتقال سفارشات در انتظار پرداخت به لغو شده در تنظیمات ووکامرس

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

انتقال سفارشات در انتظار پرداخت به لغو شده در ووکامرس

در ادامه هر یک از تنظیمات را بصورت کامل توضیح خواهم داد تا بتوانید به راحتی تمام تنظیمات را پیکربندی کنید.

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

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


انتقال سفارشات در انتظار پرداخت به لغو شده در ووکامرس با کدنویسی

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

/**
* @snippet Automatically Cancel Pending Orders
* @author https://websoltan.com
* @compatible WooCommerce 7
* @donate  https://zarinp.al/websoltan
*/


function cancel_pending_orders() {
    // دریافت لیست سفارشات در وضعیت "در انتظار پرداخت"
    $args = array(
        'post_type'      => 'shop_order',
        'post_status'    => 'wc-pending',
        'posts_per_page' => -1,
    );
    $pending_orders = get_posts($args);
    // انتقال سفارشات به وضعیت "لغو شده"
    foreach ($pending_orders as $order) {
        $order_obj = wc_get_order($order->ID);
        $order_obj->update_status('cancelled', 'سفارش به دلیل عدم پرداخت لغو شد.', true);
    }
}

سپس، باید این تابع را در زمانی که میخواهید اجرا شود فراخوانی کنید. برای این کار می‌توانید از هوک cron استفاده کنید. هوک cron به شما اجازه میدهد تا تابعی را به صورت دوره‌ای اجرا کنید. برای فراخوانی تابع cancel_pending_orders با استفاده از هوک cron ، کد زیر را در فایل functions.php قالب خود قرار دهید.

/**
* @snippet Automatically Cancel Pending Orders
* @author https://websoltan.com
* @compatible WooCommerce 7
* @donate  https://zarinp.al/websoltan
*/

add_action('wp', 'schedule_cancel_pending_orders');
function schedule_cancel_pending_orders() {
    if (!wp_next_scheduled('cancel_pending_orders_event')) {
        wp_schedule_event(time(), 'daily', 'cancel_pending_orders_event');
    }
}
add_action('cancel_pending_orders_event', 'cancel_pending_orders');

در این مثال تابع cancel_pending_orders با استفاده از هوک cron به صورت روزانه اجرا میشود. شما میتوانید زمان اجرای آن را با تغییر پارامتر ‘daily’ در wp_schedule_event به دلخواه تغییر دهید. پس در این روش نحوه انتقال محصولات در انتظار پرداخت به لغو شده با استفاده از کدنویسی توضیح داده شد.


انتقال سفارشات در انتظار پرداخت به لغو شده در ووکامرس با کدنویسی

راه حل بعدی برای پیاده‌ سازی انتقال سفارشات در انتظار پرداخت به لغو شده در ووکامرس با استفاده از فیلتر woocommerce_order_status_changed میباشد تا بتوانید وضعیت سفارش را از pending به cancelled تغییر دهید. این روند را میتوان با استفاده از تابع add_filter در فایل functions.php قالب پیاده‌ سازی کرد. بهمین منظور دستورات زیر را در فایل فانکشن قالبتون وارد کنید.

/**
* @snippet Automatically Cancel Pending Orders
* @author https://websoltan.com
* @compatible WooCommerce 7
* @donate  https://zarinp.al/websoltan
*/

add_filter( 'woocommerce_order_status_changed', 'custom_change_order_status', 10, 4 );
function custom_change_order_status( $order_id, $old_status, $new_status, $order ) {
    if ( $new_status == 'cancelled' ) {
        return; // اگر وضعیت سفارش از قبل لغو شده است، فیلتر را اجرا نکنید
    }
    
    if ( $new_status == 'pending' && ! $order->get_date_paid() ) {
        // تغییر وضعیت سفارش به "لغو شده"
        $order->update_status( 'cancelled', __( 'Payment not received within specified time.', 'text-domain' ) );
    }
}

در این کد ابتدا چک میکنیم که وضعیت سفارش مورد نظر از قبل لغو شده است یا خیر. اگر وضعیت سفارش قبلا به لغو شده تغییر کرده بود ، فیلتر را اجرا نکنیم و از تغییر وضعیت صرف‌ نظر کنیم. سپس درصورتیکه وضعیت سفارش از در انتظار پرداخت به لغو شده تغییر کرده باشد و تاریخ پرداختی وجود نداشته باشد ، با استفاده از تابع update_status وضعیت سفارش را به لغو شده تغییر میدهیم و دلیل لغو سفارش را نیز مشخص میکنیم. میتوانید متن دلیل لغو را با جایگزینی Payment not received within specified time با مقدار مورد نظر خود تغییر دهید.

پس از افزودن این کد به فایل functions.php قالب خود و ذخیره تغییرات ، سفارشات در انتظار پرداخت که در مدت زمان تعیین شده پرداخت نشوند ، به طور خودکار به وضعیت لغو شده تغییر خواهند کرد.


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

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

/**
* @snippet       Automatically Cancel Pending Orders After 1h
* @author        https://websoltan.com
* @compatible    WooCommerce 7
* @donate     https://zarinp.al/websoltan
*/
 
add_action( 'woocommerce_order_status_pending', 'bbloomer_cancel_failed_pending_order_event' );
  
function bbloomer_cancel_failed_pending_order_event( $order_id ) {
   if ( ! wp_next_scheduled( 'bbloomer_cancel_failed_pending_order_after_one_hour', array( $order_id ) ) ) {
      wp_schedule_single_event( time() + 3600, 'bbloomer_cancel_failed_pending_order_after_one_hour', array( $order_id ) );
   }
}
 
add_action( 'bbloomer_cancel_failed_pending_order_after_one_hour', 'bbloomer_cancel_order' );
 
function bbloomer_cancel_order( $order_id ) {
   $order = wc_get_order( $order_id );
   wp_clear_scheduled_hook( 'bbloomer_cancel_failed_pending_order_after_one_hour', array( $order_id ) );
   if ( $order->has_status( array( 'pending' ) ) ) { 
      $order->update_status( 'cancelled', 'Pending order cancelled after 1 hour' );
   }
}

نتیجه گیری

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

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

دیدگاه ها

2 پاسخ

    1. سلام وقتتون بحیر
      به دلایل زیر ممکنه کدها کار نکنند:
      1- نحوه صحیح ایمپورت کدها
      2- تداخل بین کدنویسی یا تداخل کد با افزونه های نصب شده
      3- عدم سازگاری کدها با قالب نصب شده

      نیاز هست یک متخصص سایتتون را بررسی و مشکل را حل کند. درصورت تمایل با شماره 09223125905 تماس حاصل کنید تا مشکل مربوطه بررسی شود.

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

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

19 + هفت =