WooCommerce: establezca el estado de pedido personalizado para nuevos pedidos

Todos los pedidos de WooCommerce van a "procesamiento", "completado", "en espera" y otros estados de pedido predeterminados según el método de pago y el tipo de producto.

A veces estos estados no son suficientes. Por ejemplo, es posible que deba marcar ciertos pedidos de una manera diferente para fines de seguimiento, filtrado y exportación. O es posible que desee deshabilitar los correos electrónicos predeterminados omitiendo los cambios de estado de pedido predeterminados.

De cualquier manera, establecer un estado de pedido personalizado automáticamente una vez que se procesa el pedido es bastante fácil. ¡Y hoy veremos qué fragmentos de PHP necesita para que esto funcione!

WooCommerce: establezca un estado de pedido personalizado durante el pago

Fragmento de PHP: asigne el estado de pedido personalizado durante el proceso de pago de WooCommerce

/**
* @snippet       Set Custom Order Status during Checkout
* @how-to        Get CustomizeWoo.com FREE
* @sourcecode    https://businessbloomer.com/?p=77911
* @author        Rodolfo Melogli
* @compatible    WooCommerce 3.5.4
* @donate $9     https://businessbloomer.com/bloomer-armada/
*/
 
// ---------------------
// 1. Register Order Status
 
add_filter( 'woocommerce_register_shop_order_post_statuses', 'bbloomer_register_custom_order_status' );
 
function bbloomer_register_custom_order_status( $order_statuses ){
    
   // Status must start with "wc-"
   $order_statuses['wc-custom-status'] = array(                                
   'label'                     => _x( 'Custom Status', 'Order status', 'woocommerce' ),
   'public'                    => false,                                
   'exclude_from_search'       => false,                                
   'show_in_admin_all_list'    => true,                                
   'show_in_admin_status_list' => true,                                
   'label_count'               => _n_noop( 'Custom Status <span class="count">(%s)</span>', 'Custom Status <span class="count">(%s)</span>', 'woocommerce' ),                             
   );     
   return $order_statuses;
}
 
// ---------------------
// 2. Show Order Status in the Dropdown @ Single Order and "Bulk Actions" @ Orders
 
add_filter( 'wc_order_statuses', 'bbloomer_show_custom_order_status' );
 
function bbloomer_show_custom_order_status( $order_statuses ) {     
   $order_statuses['wc-custom-status'] = _x( 'Custom Status', 'Order status', 'woocommerce' );      
   return $order_statuses;
}
 
add_filter( 'bulk_actions-edit-shop_order', 'bbloomer_get_custom_order_status_bulk' );
 
function bbloomer_get_custom_order_status_bulk( $bulk_actions ) {
   // Note: "mark_" must be there instead of "wc"
   $bulk_actions['mark_custom-status'] = 'Change status to custom status';
   return $bulk_actions;
}
 
 
 
// ---------------------
// 3. Set Custom Order Status @ WooCommerce Checkout Process
 
add_action( 'woocommerce_thankyou', 'bbloomer_thankyou_change_order_status' );
 
function bbloomer_thankyou_change_order_status( $order_id ){
   if( ! $order_id ) return;
   $order = wc_get_order( $order_id );
 
   // Status without the "wc-" prefix
   $order->update_status( 'custom-status' );
}

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir