یکی از قابلیتهای قدرتمند ووکامرس، مدیریت وضعیتهای مختلف سفارشات است که امکان پیگیری سفارشات را در مراحل مختلف پردازش فراهم میکند. وضعیتهای پیشفرض ووکامرس شامل “در انتظار پرداخت”، “در حال پردازش”، “ارسال شده” و “لغو شده” هستند.
با نصب برخی افزونهها مانند نقدینه (پرداخت در محل) از مجموعه نابیک، وضعیتهای جدیدی مانند “در انتظار تایید” و “پرداخت در محل” به این لیست اضافه میشوند که به مدیریت بهتر سفارشات کمک میکنند. اما در برخی موارد، ممکن است بخواهید یک وضعیت سفارشی (Custom Order Status) برای سفارشات خود ایجاد کنید. در این آموزش، بدون نیاز به افزونه و تنها با افزودن چند خط کد به فایل functions.php
(ترجیحاً در چایلد تم)، میتوانید وضعیت سفارشی جدیدی مانند “در حال آمادهسازی” را به لیست وضعیتهای موجود در ووکامرس اضافه کنید.
برای شروع، ابتدا باید وضعیت سفارشی خود را به وردپرس معرفی کنید. این کار را با استفاده از تابع register_post_status
انجام میدهیم.
کد زیر را در فایل functions.php
خود قرار دهید:
function register_custom_order_status() {
register_post_status( 'wc-preparing', array(
'label' => _x( 'در حال آمادهسازی', 'Order status', 'woocommerce' ),
'public' => true,
'exclude_from_search' => false,
'show_in_admin_all_list' => true,
'show_in_admin_status_list' => true,
'label_count' => _n_noop(
'در حال آمادهسازی <span class="count">(%s)</span>',
'در حال آمادهسازی <span class="count">(%s)</span>',
'woocommerce'
)
));
}
add_action( 'init', 'register_custom_order_status' );
توضیحات کد:
register_post_status( 'wc-preparing', ...)
: با این خط کد، وضعیت «در حال آمادهسازی» را به عنوان یک وضعیت جدید به سیستم وردپرس معرفی میکنیم. wc-preparing
اسلاگ این وضعیت است.label
: این گزینه، نام وضعیت را مشخص میکند که در پنل مدیریت ووکامرس نمایش داده میشود.show_in_admin_all_list
: این تنظیم باعث میشود که وضعیت سفارشی در لیست تمام سفارشها در پنل مدیریت قابل مشاهده باشد.label_count
: تعداد سفارشاتی که در این وضعیت هستند، در کنار آن نمایش داده میشود.بعد از ثبت وضعیت جدید، باید آن را به لیست وضعیتهای موجود در ووکامرس اضافه کنید تا در صفحه سفارشات قابل انتخاب باشد. کد زیر را به فایل functions.php
اضافه کنید:
function add_custom_order_status_to_wc_statuses( $order_statuses ) {
$new_order_statuses = array();
foreach ( $order_statuses as $key => $status ) {
$new_order_statuses[ $key ] = $status;
// پس از وضعیت "در حال پردازش"، وضعیت سفارشی را اضافه میکنیم
if ( 'wc-processing' === $key ) {
$new_order_statuses['wc-preparing'] = _x( 'در حال آمادهسازی', 'Order status', 'woocommerce' );
}
}
return $new_order_statuses;
}
add_filter( 'wc_order_statuses', 'add_custom_order_status_to_wc_statuses' );
توضیحات کد:
foreach
: این حلقه برای هر وضعیت موجود در لیست وضعیتها اجرا میشود.if ( 'wc-processing' === $key )
: وضعیت «در حال آمادهسازی» را پس از وضعیت «در حال پردازش» اضافه میکند.$new_order_statuses['wc-preparing']
: وضعیت جدید به لیست وضعیتها اضافه میشود.برای اینکه بتوانید وضعیت «در حال آمادهسازی» را برای چندین سفارش به صورت همزمان تغییر دهید، باید آن را به بخش عملیات گروهی (Bulk actions) ووکامرس اضافه کنید. کد زیر را در فایل functions.php
قرار دهید:
function add_custom_order_status_to_bulk_actions( $bulk_actions ) {
$bulk_actions['mark_preparing'] = 'تغییر وضعیت به در حال آمادهسازی';
return $bulk_actions;
}
add_filter( 'bulk_actions-edit-shop_order', 'add_custom_order_status_to_bulk_actions' );
توضیحات کد:
mark_preparing
: این مقدار مشخص میکند که عملیات گروهی برای تغییر وضعیت سفارشها به «در حال آمادهسازی» باشد.$bulk_actions['mark_preparing']
: به لیست عملیات گروهی گزینه جدیدی برای تغییر وضعیت به «در حال آمادهسازی» اضافه میکنیم.بعد از اضافه کردن این کدها، کافی است که:
نکات مهم:
با استفاده از این روش، به راحتی میتوانید وضعیت «در حال آمادهسازی» را به ووکامرس اضافه کرده و برای مدیریت بهتر سفارشات خود از آن بهره ببرید. این کار به سادگی و بدون نیاز به افزونههای اضافی، تنها با چند خط کد قابل انجام است.
اگر به دنبال ارتقای کارایی فروشگاه آنلاین خود هستید، استفاده از افزونههای نابیک میتواند تاثیر قابلتوجهی در بهبود عملکرد فروشگاه شما داشته باشد. با نصب افزونه های گیت لند برای پرداخت امن، ندا برای جمعآوری بازخورد هوشمند، نقدینه برای مدیریت پرداخت در محل، حمل و نقل حرفهای برای ارسال بیدردسر، به شما این امکان را میدهند که تجربهای بهینهتر و سریعتر برای مشتریان خود فراهم کنید.
دیدگاهتان را بنویسید