Đây là những gì tôi đã sử dụng để tạo trạng thái đơn hàng tùy chỉnh được gọi là "Hóa đơn". Thêm phần này vào chức năng của chủ đề của bạn.php
// New order status AFTER woo 2.2
add_action( 'init', 'register_my_new_order_statuses' );
function register_my_new_order_statuses() {
register_post_status( 'wc-invoiced', array(
'label' => _x( 'Invoiced', '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( 'Invoiced <span class="count">(%s)</span>', 'Invoiced<span class="count">(%s)</span>', 'woocommerce' )
) );
}
add_filter( 'wc_order_statuses', 'my_new_wc_order_statuses' );
// Register in wc_order_statuses.
function my_new_wc_order_statuses( $order_statuses ) {
$order_statuses['wc-invoiced'] = _x( 'Invoiced', 'Order status', 'woocommerce' );
return $order_statuses;
}
Để thêm trạng thái mới của bạn vào trình đơn thả xuống Chỉnh sửa hàng loạt, bạn phải sử dụng javascript. Thêm chức năng của bạn vào admin_footer
hành động. Chức năng của tôi sau đó trông giống như thế này:
function custom_bulk_admin_footer() {
global $post_type;
if ( $post_type == 'shop_order' ) {
?>
<script type="text/javascript">
jQuery(document).ready(function() {
jQuery('<option>').val('mark_invoiced').text('<?php _e( 'Mark invoiced', 'textdomain' ); ?>').appendTo("select[name='action']");
jQuery('<option>').val('mark_invoiced').text('<?php _e( 'Mark invoiced', 'textdomain' ); ?>').appendTo("select[name='action2']");
});
</script>
<?php
}
}
Hành động được thêm hai lần vì có một hành động hàng loạt ở đầu và hành động khác ở cuối danh sách đơn hàng.