Cómo ocultar el estado del pedido en WooCommerce

Publicado: 2020-11-12

WooCommerce Ocultar estado del pedido ¿Desea ocultar los estados de los pedidos principales en su tienda WooCommerce? Recientemente, un cliente quería que ocultara algunos de los estados de los pedidos en su tienda WooCommerce. En esta publicación, verá cómo puede eliminar fácilmente algunos estados de pedido y cómo crear otros personalizados.

WooCommerce Ocultar estado del pedido

Por varios motivos, es posible que desee ocultar algunos de los estados principales de los pedidos. Sin embargo, la versión predeterminada de WooCommerce le permite marcar pedidos con uno de los siguientes estados completado, procesando, pendiente de pago, en espera, reembolsado, cancelado o fallido.

Muchos complementos le permiten administrar los estados de los pedidos, y uno de ellos es el complemento ' Administrador de estado de pedidos de WooCommerce ' que tiene un precio de $ 49. Administrador de estado de pedidos de WooCommerce

Esta podría ser una solución costosa para su tienda, pero hay una manera fácil de hacerlo. En la versión actual de WooCommerce, los estados de los pedidos se guardan como un estado de publicación personalizado, al igual que el borrador, programado o publicado para las publicaciones.

Cómo ocultar el estado del pedido

Dicho esto, veamos cómo puede ocultar el estado del pedido en WooCommerce usando un fragmento de código. Para verificar los mensajes de estado del pedido predeterminados, inicie sesión en su sitio de WordPress y acceda al Panel como usuario administrador. Luego, haz clic en WooCommerce > Pedidos . Verás esto: back-end del estado del pedido

Estos mensajes también se muestran en el front-end cuando un cliente intenta realizar un pedido. Se puede acceder a esto haciendo clic en Mi cuenta > Pedidos, como se muestra a continuación: interfaz de estado del pedido

Pasos para ocultar estados de pedidos principales

Vale la pena mencionar que cuando oculta los estados de los pedidos principales, asegúrese de que no haya productos con ese estado. Además, debe asegurarse de que su tienda WooCommerce no use ese estado en ningún lugar, ya que puede generar errores. Por ejemplo, si no tienes pensado realizar devoluciones en tu tienda WooCommerce, puedes ocultar el estado de Reembolso.

La razón por la que no podemos eliminar todos los estados de pedido principales es que los complementos usan estados de pedido, incluso los que no usa en su flujo de trabajo. Los complementos, como las pasarelas de pago, siempre asumen que los estados principales de los pedidos están presentes. Si no están ahí, se romperán.

Estos son los pasos que debe seguir:

  1. Inicie sesión en su sitio de WordPress y acceda al Panel como usuario administrador.
  2. En el menú del panel, haga clic en Menú de apariencia > Menú del editor de temas . Cuando se abra la página del Editor de temas, busque el archivo de funciones del tema para agregar la función para ocultar los estados de los pedidos principales en su tienda WooCommerce.
  3. Agrega el siguiente código al archivo functions.php:
 /*

 * Eliminación de estados de pedidos principales

 * @param array $wc_statuses_arr Conjunto de todos los estados de pedidos en el sitio web

 */

función njengah_remove_order_statuses( $wc_statuses_arr ){

            // Procesando

            if( isset( $wc_statuses_arr['wc-processing'] ) ) { // si existe

                        unset( $wc_statuses_arr['wc-processing'] ); // eliminarlo de la matriz

            }

            // Reembolsado

            if( isset( $wc_statuses_arr['wc-refunded'] ) ){

                        unset( $wc_statuses_arr['wc-refunded'] );

            }

            // En espera

            if( isset( $wc_statuses_arr['wc-en-espera'] ) ){

                        unset( $wc_statuses_arr['wc-en-espera'] );

            }

            // Fallido

            if( isset( $wc_statuses_arr['wc-failed'] ) ){

                        unset( $wc_statuses_arr['wc-failed'] );

            }

            // Pago pendiente

            if( isset( $wc_statuses_arr['wc-pending'] ) ){

                        unset( $wc_statuses_arr['wc-pending'] );

            }

            // Completado

            //if( isset( $wc_statuses_arr['wc-completed'] ) ){

            // unset( $wc_statuses_arr['wc-completed'] );

            //

            // Cancelado

            //if( isset( $wc_statuses_arr['wc-cancelled'] ) ){

            // unset( $wc_statuses_arr['wc-cancelled'] );

            //

            devolver $wc_statuses_arr; // devolver estados de resultados

}

add_filter('wc_order_statuses', 'njengah_remove_order_statuses');
  1. Este es el resultado en la parte delantera: ocultar estados de pedidos
  2. Para agregar un estado de pedido personalizado, agregue el siguiente código en el archivo functions.php:
 /**

* Registrar nuevo estado con ID "wc-njengah-shipment" y etiqueta "En espera de envío"

*/

función njengah_register_awaiting_shipment_status() {
register_post_status('wc-njengah-shipment', array(

'etiqueta' => 'En espera de envío',

'público' => verdadero,

'show_in_admin_status_list' => verdadero, // muestra el recuento Todo (12), Completado (9), En espera de envío (2) ...

'label_count' => _n_noop( 'En espera de envío <span class="count">(%s)</span>', 'En espera de envío <span class="count">(%s)</span>' )

) );
}

add_action('init', 'njengah_register_awaiting_shipment_status');

/*

* Agregar estado registrado a la lista de estados de pedidos de WC

* @param array $wc_statuses_arr Conjunto de todos los estados de pedidos en el sitio web

*/

función njengah_add_status ($ wc_statuses_arr) {
$nuevos_estados_arr = array();

// agregar nuevo estado de pedido después del procesamiento

foreach ( $wc_statuses_arr como $id => $etiqueta ) {

$nuevos_estados_arr[ $id ] = $etiqueta;

if ( 'wc-completed' === $id ) { // después del estado "Completado"

$new_statuses_arr['wc-njengah-shipment'] = 'En espera de envío';

}

}
devuelve $nuevos_estados_arr;

// si el estado del pedido no le importa, puede eliminar las líneas 21-32 y descomentar las siguientes 35-36

// $wc_statuses_arr['wc-njengah-shipment'] = 'En espera de envío';

// devuelve $wc_statuses_arr;
}

add_filter('wc_order_statuses', 'njengah_add_status');
  1. Este es el resultado: añadir estado de pedido personalizado

Conclusión

En esta publicación, ha visto cómo puede ocultar los estados de los pedidos principales. Sin embargo, es importante tener en cuenta que el estado del pedido que desea eliminar no se utiliza en ninguna parte de su tienda, ya que puede generar errores. Además, he compartido cómo agregar un estado de pedido personalizado. Si no está familiarizado con el manejo del código, comuníquese con un desarrollador calificado de WordPress.

Artículos similares