Anteriormente, WooCommerce utilizaba una taxonomía «shop_order_status», por lo que agregar nuevos estados de pedidos era un poco complicado, sin embargo, ¡ahora es más fácil que nunca! Echa un vistazo al siguiente código para ver un ejemplo:
function yaz_register_new_wc_order_statuses() { register_post_status( 'wc-enviado', array( 'label' => 'Enviado', 'public' => true, 'exclude_from_search' => false, 'show_in_admin_all_list' => true, 'show_in_admin_status_list' => true, 'label_count' => _n_noop( 'Enviado (%s)', 'Enviado (%s)>' ) ) ); register_post_status( 'wc-cambio', array( 'label' => 'Cambio', 'public' => true, 'exclude_from_search' => false, 'show_in_admin_all_list' => true, 'show_in_admin_status_list' => true, 'label_count' => _n_noop( 'Cambio (%s)', 'Cambio (%s)' ) ) ); // repeat register_post_status() for each new status } add_action( 'init', 'yaz_register_new_wc_order_statuses' ); // Add new statuses to list of WC Order statuses function yaz_add_new_wc_statuses_to_order_statuses( $order_statuses ) { $new_order_statuses = array(); // add new order statuses after processing foreach ( $order_statuses as $key => $status ) { $new_order_statuses[ $key ] = $status; if ( 'wc-processing' === $key ) { $new_order_statuses['wc-enviado'] = 'Enviado'; $new_order_statuses['wc-cambio'] = 'Cambio'; // Add a $new_order_statuses[key] = value; for each status you've added (in the order you want) } } return $new_order_statuses; } add_filter( 'wc_order_statuses', 'yaz_add_new_wc_statuses_to_order_statuses' );