I have added new custom order status to woocommerce by using following function.
// Register New Order Statuses
function wpex_wc_register_post_statuses() {
register_post_status( 'wc-custom-order-status', array(
'label'=> _x( 'Shipping In Progress', 'WooCommerce Order status', 'text_domain' ),
'public'=> true,
'exclude_from_search'=> false,
'show_in_admin_all_list'=> true,
'show_in_admin_status_list'=> true,
'label_count'=> _n_noop( 'Approved (%s)', 'Approved (%s)', 'text_domain' )
) );
}
add_filter( 'init', 'wpex_wc_register_post_statuses' );
// Add New Order Statuses to WooCommerce
function wpex_wc_add_order_statuses( $order_statuses ) {
$order_statuses['wc-custom-order-status'] = _x( 'Shipping In Progress', 'WooCommerce Order status', 'text_domain' );
return $order_statuses;
}
add_filter( 'wc_order_statuses', 'wpex_wc_add_order_statuses' );
See Question&Answers more detail:os