WooCommerce es un increíble complemento de WordPress para vender productos en línea. Y hoy me gustaría mostrarte cómo crear un complemento que te permita crear estados de pedidos personalizados. De forma predeterminada, WooCommerce proporciona estos estados de pedidos:
- cancelado
- terminado
- fallido
- en espera
- pendiente
- Procesando
- reintegrado
Pero, ¿qué sucede si desea agregar nuevos estados o tal vez modificar los existentes? A continuación se muestra un ejemplo que le muestra lo fácil que es agregar un nuevo estado de pedido a sus pedidos de WooCommerce.
Visualmente aquí está el resultado final:
Registrar nuevo estado de pedido de WooCommerce
Anteriormente, WooCommerce usaba 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! Eche un vistazo al código a continuación para ver un ejemplo.
// Register New Order Statuses
function wpex_wc_register_post_statuses() {
register_post_status( 'wc-custom-order-status', array(
'label' => _x( 'Custom Order Status Name', '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( 'Custom Order Status Name', 'WooCommerce Order status', 'text_domain' );
return $order_statuses;
}
add_filter( 'wc_order_statuses', 'wpex_wc_add_order_statuses' );
Si desea agregar varios estados de pedidos nuevos, simplemente duplique la función register_post_status dentro de la función wpex_wc_register_post_statuses tantas veces como desee, asegurándose de modificar el ID y las etiquetas en consecuencia. Luego agregue el nuevo estado del pedido a la matriz $ order_statuses en la función wpex_wc_add_order_statuses.