Tutoriales

Evitar que los pedidos puedan borrarse en WooCommerce

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.

Nota: Hay una valoración incrustada en esta entrada, por favor, visita esta entrada para valorarla.

Almacenamos las IPs desde la que se envían las valoraciones para evitar fraudes

Francisco Javier Carazo Gil

Entradas recientes

RedSys para Contact Form 7 ahora acepta preautorizaciones

RedSys aparte de los pagos normales, llamados autorizaciones, acepta una variedad de operaciones: desde autorizaciones…

hace % días

Ordenar productos de forma diferente por cada categoría en WooCommerce

WooCommerce permite ordenar los productos de una forma nativa, para poder presentar primero los que…

hace % días

Evitar que se instalen los temas por defecto de WordPress cada vez que actualizas el núcleo

Cada vez que hay una actualización grande del núcleo WordPress, por defecto WordPress te instala…

hace % días

Pantalla LCD: ¿qué es?

Una pantalla LCD es una pantalla delgada y hecha de cristal líquido. Se usa en…

hace % días

Flujos de pago con Gravity Flow y RedSys

De todos los plugins que existen para Gravity Forms, que son numerosos porque la propia…

hace % días

CMS, ¿Qué es y qué ventajas tiene?

Un CMS, como WordPress, facilita la creación y gestión de contenido en la web, sin…

hace % días