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

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

تنظیم وضعیت دلخواه برای سفارشات جدید در ووکامرس

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

۱- ایجاد وضعیت سفارشی جدید در ووکامرس

قطعه کد زیر به شما کمک خواهد کرد تا یک وضعیت سفارشی جدید به ووکامرس اضافه کنید. نام وضعیت سفارشی تعریف شده در اینجا، Custom Status بوده که می‌توانید آن را تغییر دهید.

/** 
* @snippet       Register Order Status
* @author        Rodolfo Melogli 
* @compatible    WooCommerce 3.5.4
*/

add_filter( 'woocommerce_register_shop_order_post_statuses', 'tidaweb_register_custom_order_status' );
 
function tidaweb_register_custom_order_status( $order_statuses )
{
    // Status must start with "wc-"
    $order_statuses['wc-custom-status'] = array(                                 
        'label'                     => _x( 'Custom Status', 'Order status', 'woocommerce' ),
        'public'                    => false,                                 
        'exclude_from_search'       => false,                                 
        'show_in_admin_all_list'    => true,                                 
        'show_in_admin_status_list' => true,                                 
        'label_count'               => _n_noop( 'Custom Status <span class="count">(%s)</span>', 'Custom Status <span class="count">(%s)</span>', 'woocommerce' ),                              
    );

    return $order_statuses;
}

۲- نمایش وضعیت تعریف شده در جزئیات سفارش، لیست سفارشات و لیست کارهای گروهی

در این مرحله می‌بایست وضعیت جدید را در جزئیات سفارش، لیست سفارشات و هر آنجایی که وضعیت‌های دیگر وجود دارند، نمایش دهید تا مدیر فروشگاه بتواند به راحتی وضعیت سفارش را به وضعیت جدید تعریف شده تغییر دهد.

/** 
* @snippet       Show Order Status in the Dropdown @ Single Order and "Bulk Actions" @ Orders
* @author        Rodolfo Melogli 
* @compatible    WooCommerce 3.5.4
*/

add_filter( 'wc_order_statuses', 'tidaweb_show_custom_order_status' );
 
function tidaweb_show_custom_order_status( $order_statuses )
{      
    $order_statuses['wc-custom-status'] = _x( 'Custom Status', 'Order status', 'woocommerce' );       
    return $order_statuses;
}
 
add_filter( 'bulk_actions-edit-shop_order', 'tidaweb_get_custom_order_status_bulk' );
 
function tidaweb_get_custom_order_status_bulk( $bulk_actions )
{
    // Note: "mark_" must be there instead of "wc"
    $bulk_actions['mark_custom-status'] = 'Change status to custom status';
    return $bulk_actions;
}

۳- تنظیم وضعیت تعریف‌شده پس از نهایی شدن سفارش

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

/** 
* @snippet       Set Custom Order Status @ WooCommerce Checkout Process
* @author        Rodolfo Melogli 
* @compatible    WooCommerce 3.5.4
*/

add_action( 'woocommerce_thankyou', 'tidaweb_thankyou_change_order_status' );
 
function tidaweb_thankyou_change_order_status( $order_id )
{
    if( ! $order_id ) return;
    $order = wc_get_order( $order_id );

    // Status without the "wc-" prefix
    $order->update_status( 'custom-status' );
}

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

/** 
* @snippet       Set Custom Order Status during Checkout
* @author        Rodolfo Melogli 
* @compatible    WooCommerce 3.5.4
*/

// ---------------------
// ۱. Register Order Status
 
add_filter( 'woocommerce_register_shop_order_post_statuses', 'tidaweb_register_custom_order_status' );
 
function tidaweb_register_custom_order_status( $order_statuses )
{
    // Status must start with "wc-"
    $order_statuses['wc-custom-status'] = array(                                 
        'label'                     => _x( 'Custom Status', 'Order status', 'woocommerce' ),
        'public'                    => false,                                 
        'exclude_from_search'       => false,                                 
        'show_in_admin_all_list'    => true,                                 
        'show_in_admin_status_list' => true,                                 
        'label_count'               => _n_noop( 'Custom Status <span class="count">(%s)</span>', 'Custom Status <span class="count">(%s)</span>', 'woocommerce' ),                              
    );

    return $order_statuses;
}
 
// ---------------------
// ۲. Show Order Status in the Dropdown @ Single Order and "Bulk Actions" @ Orders
 
add_filter( 'wc_order_statuses', 'tidaweb_show_custom_order_status' );
 
function tidaweb_show_custom_order_status( $order_statuses )
{      
    $order_statuses['wc-custom-status'] = _x( 'Custom Status', 'Order status', 'woocommerce' );       
    return $order_statuses;
}
 
add_filter( 'bulk_actions-edit-shop_order', 'tidaweb_get_custom_order_status_bulk' );
 
function tidaweb_get_custom_order_status_bulk( $bulk_actions )
{
    // Note: "mark_" must be there instead of "wc"
    $bulk_actions['mark_custom-status'] = 'Change status to custom status';
    return $bulk_actions;
}
 

// ---------------------
// ۳. Set Custom Order Status @ WooCommerce Checkout Process
 
add_action( 'woocommerce_thankyou', 'tidaweb_thankyou_change_order_status' );
 
function tidaweb_thankyou_change_order_status( $order_id )
{
    if( ! $order_id ) return;
    $order = wc_get_order( $order_id );

    // Status without the "wc-" prefix
    $order->update_status( 'custom-status' );
}

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

به‌روزرسانی خودکار سبد خرید با تغییر تعداد محصول

منبع : Business Bloomer

۳.۸/۵ - (۱۷۱ امتیاز)

6 نظر برای “تنظیم وضعیت سفارشی برای سفارشات جدید در ووکامرس

  1. محسنی میگوید:

    سلام
    من میخوام سفارش مشتری بدون پرداخت برام ارسال بشه اما سفارش ارسال نمیشه چون پرداخت نشده.
    چیکار باید بکنم؟
    ممنون

    • مدیر سایت میگوید:

      باسلام
      شما میتونین یک روش پرداخت به نام “بعداً پرداخت می‌کنم” را فعال کنین تا سفارش به صورت در حال انجام قرار بگیره و بتونه براتون ایمیل بفرسته . با این کار سفارش کاربر به طور کامل ثبت میشه و وارد درگاه بانکی نمیشه تا پرداختی انجام بده.
      باتشکر

  2. Ali میگوید:

    سلام وقت بخیر
    برای تغییر نام وضعیت، هرجا عبارت custom status هست را به نام دلخواه تغییر دهیم؟
    یا خیر بعضی جاها لازمه به زبان لاتین باشه
    ممنونم

    • مدیر سایت میگوید:

      سلام دوست عزیز
      بله هر جایی که custom-status داره به اسم خودتون رو تغییر بدید فقط اگر قبلش wc- داره اون باید سر جای خودش بمونه.
      موفق و پیروز باشید

    • مدیر سایت میگوید:

      سلام دوست عزیز
      شما این کدها رو باید در افزونه اختصاصی خود یا در فایل functions.php پوسته تون باید بارگذاری کنید.
      باتشکر

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

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