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

¿Qué aporta la integración de Bizum y métodos similares en el proceso de pago?

El comercio electrónico español, que se encuentra en pleno crecimiento y transformación, vive actualmente un…

hace % días

Mejores addons para suscripciones WooCommerce

Compara los mejores addons para suscripciones WooCommerce y elige pagos, membresías y automatizaciones compatibles con…

hace % días

Mejores addons para suscripciones WooCommerce

Compara los mejores addons para suscripciones WooCommerce y elige pagos, membresías y automatizaciones compatibles con…

hace % días

Desarrollo de plugins a medida WordPress

El desarrollo de plugins a medida WordPress resuelve pagos, reservas y flujos propios con integración…

hace % días

Plugin RedSys WooCommerce: cobros sin errores

El plugin RedSys WooCommerce conecta tu tienda con el banco, reduce errores de cobro y…

hace % días

Cómo resolver un rechazo SIS en WordPress

Aprende a resolver rechazo SIS en WordPress: identifica el código, revisa RedSys, pedidos y firmas…

hace % días