Trạng thái đơn hàng tùy chỉnh WooC Commerce theo chương trình

Cả đời tôi không thể hiểu tại sao điều này lại xảy ra, nhưng nó đã không xảy ra trên phiên bản WooC Commerce cũ hơn

Tôi có trạng thái đơn đặt hàng tùy chỉnh mà tôi tạo bằng mã sau

function register_awaiting_shipment_order_status[] {
    register_post_status[ 'wc-shipment', array[
        'label'                     => 'Preparing Shipment',
        'public'                    => true,
        'exclude_from_search'       => false,
        'show_in_admin_all_list'    => true,
        'show_in_admin_status_list' => true,
        'label_count'               => _n_noop[ 'Preparing Shipment [%s]', 'Preparing Shipment [%s]' ]
    ] ];
}
add_action[ 'init', 'register_awaiting_shipment_order_status' ];

// Add to list of WC Order statuses
function add_awaiting_shipment_to_order_statuses[ $order_statuses ] {

    $new_order_statuses = array[];

    // add new order status after processing
    foreach [ $order_statuses as $key => $status ] {

        $new_order_statuses[ $key ] = $status;

        if [ 'wc-processing' === $key ] {
            $new_order_statuses['wc-shipment'] = 'Preparing Shipment';
        }
    }

    return $new_order_statuses;
}
add_filter[ 'wc_order_statuses', 'add_awaiting_shipment_to_order_statuses' ];

Và nếu tôi vào một đơn đặt hàng và thay đổi nó thành 'Chuẩn bị giao hàng' theo cách thủ công, thì không có vấn đề gì và mọi thứ hoạt động như mong đợi

Tuy nhiên, tôi có một nút mà tôi đã mã hóa để cập nhật trạng thái theo chương trình thông qua AJAX bằng nút này

$order = new WC_Order[$orderid];
if [!$order] exit[];
$order->update_status['wc-shipment'];

Tất cả đều hoạt động, nhưng khi nó được thực hiện theo chương trình, đơn hàng sẽ biến mất khỏi danh sách đơn hàng và tôi thậm chí không thể tìm kiếm nó theo số đơn hàng chính xác. Cách duy nhất để truy cập đơn hàng đó là nhập thủ công ID đơn hàng vào URL để chỉnh sửa đơn hàng đó. Khi chỉnh sửa, trạng thái đơn hàng đã được cập nhật thành công thành 'Chuẩn bị giao hàng'. Sau đó, nếu tôi lưu/cập nhật đơn đặt hàng theo cách thủ công mà không thay đổi gì, nó sẽ hiển thị trong danh sách đơn hàng.

Cuối cùng, nếu tôi chạy chính xác mã update_status cho trạng thái WooC Commerce tích hợp, thì tất cả đều hoạt động như mong đợi

Vậy cách tôi đang cập nhật hoặc tạo trạng thái tùy chỉnh đang thiếu một số bước nào đó để cho phép WooC Commerce nhận thấy nó là gì?

Mọi lời khuyên sẽ được đánh giá rất cao, vì điều này ngăn cản tôi cập nhật nội dung

  • Chủ đề này đã được sửa đổi 4 tháng, 4 tuần trước bởi
    cirrus123 .
  • Chủ đề này đã được sửa đổi 4 tháng, 4 tuần trước bởi cirrus123 .

Đang xem 3 trả lời - 1 đến 3 [trong tổng số 3]

  • Hỗ trợ plugin

    Kaushik S. a11n

    [@kaushiksomaiya]

    4 tháng, 4 tuần trước

    Chào bạn

    Cám ơn bạn đã liên lạc với chúng tôi. 🙂

    Tôi hiểu rằng mã bạn đã đặt để cập nhật trạng thái đơn hàng không hoạt động

    Đây là một chủ đề phát triển khá phức tạp. Tôi sẽ để nó mở một chút để xem có ai có thể bấm chuông để giúp bạn không

    Tôi tìm thấy câu hỏi này ở đây. https. // stackoverflow. com/câu hỏi/22935358/wooc Commerce-change-order-status-with-php-code, một số người dùng đã mô tả các cách thay thế để cập nhật trạng thái đơn hàng trên các phiên bản WooC Commerce mới hơn, bạn có thể dùng thử

    Bạn có thể quan sát lệnh gọi Ajax trên bảng điều khiển của trình duyệt để xem liệu lệnh gọi đó có trả về phản hồi 2xx thành công hay không

    Tôi cũng có thể đề xuất Cổng tài nguyên dành cho nhà phát triển WooC Commerce để biết các tài nguyên đang phát triển cho WooC Commerce

    Bạn cũng có thể truy cập nhóm Facebook WooC Commerce hoặc kênh #developers của Cộng đồng WooC Commerce Slack. Chúng tôi may mắn có một cộng đồng tuyệt vời gồm các nhà phát triển nguồn mở cho WooC Commerce và nhiều nhà phát triển của chúng tôi cũng tham gia vào đó

    Trình bắt đầu luồng

    cirrus123

    [@cirrus123]

    4 tháng, 4 tuần trước

    Cuộc gọi AJAX chắc chắn đang hoạt động vì nó đang cập nhật trạng thái. Vấn đề là nó không hiển thị trong danh sách đơn hàng nếu đó là trạng thái tùy chỉnh đã được cập nhật theo chương trình

    Có lẽ tôi đang bắt đầu chẩn đoán xem vấn đề có thể nằm ở đâu

    Nó liên quan đến tên trạng thái thực tế

    1] Nếu tôi tạo trạng thái đơn hàng tùy chỉnh trong WooC Commerce không có tiền tố “wc-”, nó sẽ không hoạt động như mong đợi – khi tôi cố cập nhật trạng thái đơn hàng thành trạng thái tùy chỉnh theo cách thủ công thông qua trang chỉnh sửa đơn hàng, nó vẫn hoạt động

    2] Nếu tôi sử dụng tiền tố “wc-”, tôi có thể cập nhật trạng thái đơn hàng theo cách thủ công. Tuy nhiên, nếu tôi cố gắng sử dụng chức năng $order->has_status, tôi cần xóa “wc-” để có kết quả khả quan

    Vì vậy, giả thuyết ban đầu của tôi là hàm update_status được gọi theo chương trình bằng cách nào đó khác với hàm được gọi khi đơn hàng được cập nhật qua trang chỉnh sửa đơn hàng và đây là lúc phát sinh sự cố. Nó có liên quan gì đó với tiền tố wc-, có lẽ

    $order->set_status['shipment'];
    $order->save[];

    hoặc

    $order->set_status['wc-shipment'];
    $order->save[];

    có cùng một vấn đề chính xác, cũng như

    $order->update_status['shipment'];

    • Câu trả lời này đã được sửa đổi 4 tháng, 4 tuần trước bởi cirrus123 .

    Hỗ trợ plugin

    Con a11n

    [@conschneider]

    Kỹ sư hạnh phúc tự động

    4 tháng, 4 tuần trước

    Xin chào lần nữa,

    Vì vậy, giả thuyết ban đầu của tôi là hàm update_status được gọi theo chương trình bằng cách nào đó khác với hàm được gọi khi đơn hàng được cập nhật qua trang chỉnh sửa đơn hàng và đây là lúc phát sinh sự cố. Nó có liên quan gì đó với tiền tố wc-, có lẽ

    .

    Tôi đang định đề xuất $order->save[]; thì tôi thấy bạn đã thử cái này rồi

    Tuy nhiên, nếu tôi cố gắng sử dụng hàm $order->has_status, tôi cần xóa “wc-” để có được kết quả khả quan

    Chỉ để được rõ ràng. Điều này có nghĩa rằng

    $order->set_status['shipment'];
    $order->save[];

    hoạt động, đúng không?

    Tôi cũng đã tìm kiếm nhanh và tìm thấy cái này. https. //rudrastyh. com/wooc Commerce/order-status. html – có thể nó hữu ích

Chủ Đề