Fuentes:
https://www.webempresa.com/blog/agregar-un-nuevo-estado-de-pedido-personalizado-en-woocommerce.html
https://iborra.es/blog/nuevos-estados-pedido-woocommerce/
Opción #1
/* Nuevo estado en órdenes */
add_action( 'init', 'wphelp_new_order_status_sent' );
function wphelp_new_order_status_sent() {
register_post_status( 'wc-sent', array(
'label' => _x( 'Sent', '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( 'Sent <span class="count">(%s)</span> ', 'Sent <span class="count">(%s)</span>', 'woocommerce' )
) );
}
// Agrega esto a los estados.
add_filter( 'wc_order_statuses', 'wphelp_order_sent' );
function wphelp_order_sent( $order_statuses ) {
$order_statuses['wc-sent'] = _x( 'Sent', 'Order status', 'woocommerce' );
return $order_statuses;
}
// Añadir el estado del pedido a las acciones masivas en el orden que queramos
function rename_or_reorder_bulk_actions( $actions ) {
$actions = array(
'trash' => $actions['trash'], //Send to thrash
'mark_processing' => $actions['mark_processing'], //Procesando
'mark_on-hold' => $actions['mark_on-hold'], //En espera
'mark_cancelled' => $actions['mark_cancelled'], //Cancelado
'mark_completed' => $actions['mark_completed'], //Completado
'mark_sent' => __( 'Change to sent', 'textdomain' ), // NUEVO ESTADO PERSONALIZADO
);
return $actions;
}
add_filter( 'bulk_actions-edit-shop_order', 'rename_or_reorder_bulk_actions', 20 );
Opcion #2:
// Registrar Estado del pedido Enviado
function wpex_wc_register_post_statuses() {
register_post_status( 'wc-shipping-progress', array(
'label' => _x( 'Enviado', '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' );
// Añadir Estado del pedido Enviado a WooCommerce
function wpex_wc_add_order_statuses( $order_statuses ) {
$order_statuses['wc-shipping-progress'] = _x( 'Enviado', 'WooCommerce Order status', 'text_domain' );
return $order_statuses;
}
add_filter( 'wc_order_statuses', 'wpex_wc_add_order_statuses' );
«Enviado» aparecerá al final de la lista, para ponerlo después del estado Procesando, debemos añadir el siguiente código.
// Añadir Estado del pedido Enviado en la lista después del estado Procesando
function add_shipping_progress_to_order_statuses( $order_statuses ) {
$new_order_statuses = array();
foreach ( $order_statuses as $key => $status ) {
$new_order_statuses[ $key ] = $status;
if ( 'wc-processing' === $key ) {
$new_order_statuses['wc-shipping-progress'] = 'Enviado';
}
}
return $new_order_statuses;
}
add_filter( 'wc_order_statuses', 'add_shipping_progress_to_order_statuses' );
Crear un email al nuevo estado «Enviado»
// Email que se envía cuando el estado del pedido está en Enviado
function email_shipping_notification( $order_id, $checkout=null ) {
global $woocommerce;
$order = new WC_Order( $order_id );
//error_log( $order->status );
if($order->status === 'shipping-progress' ) {
// Mensaje del email.
$mailer = $woocommerce->mailer();
$message_body = __( 'Su pedido se encuentra listo y está siendo enviado en estos momentos.<br><br>Por favor, ingrese en su cuenta desde la página web de <strong>Nombre de tu web</strong> para que pueda realizar un seguimiento de su pedido en la sección de Pedidos:<br><br><a href="http://nombredetuweb.com/mi-cuenta/" target="_blank">Acceso a su cuenta</a>.', 'text_domain' );
$message = $mailer->wrap_message(
// Mensaje en header.
sprintf( __( 'Su pedido ha sido enviado', 'text_domain' ), $order->get_order_number() ), $message_body );
// Asunto del mensaje.
$result = $mailer->send( $order->billing_email, sprintf( __( 'Su pedido ha sido enviado en Nombre de tu web', 'text_domain' ), $order->get_order_number() ), $message );
//error_log( $result );
}
}
add_action( 'woocommerce_order_status_changed', 'email_shipping_notification');
Renombrar un estado del pedido
// Renombrar un estado del pedido
function wc_renaming_order_status( $order_statuses ) {
foreach ( $order_statuses as $key => $status ) {
$new_order_statuses[ $key ] = $status;
if ( 'wc-completed' === $key ) {
$order_statuses['wc-completed'] = _x( 'Pedido Recibido', 'Order status', 'woocommerce' );
}
}
return $order_statuses;
}
add_filter( 'wc_order_statuses', 'wc_renaming_order_status' );
0 Comentarios