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

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

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

اگر می‌خواهید بدون نصب افزونه و با استفاده از کد 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

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

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