En cuanto tu tienda online coge algo de tamaño, sobre todo si tu tienda es una tienda de productos físicos y no de plugins como esta, necesitarás probablemente ayuda para hacer todo lo que implica tener un ecommerce y que la tecnología no te lo puede resolver completamente de forma automática: preparar paquetes, enviarlos, contabilizarlos, atender a los clientes, etc.
Para ese tipo de labores usando WooCommerce existe un rol que tiene todas las capacidades para gestionar todas las labores de una tienda, pero sin entrar en los asuntos propios de WordPress. Así limitamos la posibilidad de que esa persona que no es técnica o que no es la responsable última de la tienda, toque cosas que no debe o no sabe.
Sin embargo, entre sus capacidades, como es lógico, hay muchas acciones destructivas y que no se pueden deshacer fácilmente. Me ha pasado ya en varios clientes, de cierto tamaño y con muchas manos tocando en el WooCommerce; que a raíz de:
- una inspección o revisión fiscal
- una reclamación de un cliente
- o una devolución
Se han dado cuenta de que hay un pedido o varios que están eliminados. Y no solo eliminados es que no están ni en la papelera. Como os podéis imaginar esto no se hace a posta, pero el resultado es terrible, porque se pierde información que es sensible y que encima tenemos obligación de guardar durante una serie de años (al menos 4 o 5 años para Hacienda).
Impedir que los pedidos se puedan borrar en WooCommerce
Así que nada, una solución sencilla es implementar el siguiente código para evitar que los pedidos se borren. Os dejo el código:
add_action( 'wp_trash_post', 'cod_restrict_post_deletion' ); add_action( 'before_delete_post', 'cod_restrict_post_deletion' ); function cod_restrict_post_deletion( $post_ID ){ $type = get_post_type($post_ID); if( $type == 'shop_order' ){ echo "No puedes borrar un pedido."; exit; } }
Si os fijáis, intercedemos en dos hooks diferentes que ofrece el núcleo de WordPress, el primero para cuando se va a enviar un post de cualquier tipo a la basura y el segundo se ejecuta justo antes de borrarse.
Se comprueba si el post_type es el de un pedido, se envía un mensaje y se anula la acción.
Podríais refirnar más el código para que afectara solo los pedidos que no están completados, para los de cierta edad o para cualquier otra condición que se os ocurra.