Cómo poner un límite máximo de tiempo de retención de pedidos según el estado del pedido

    Se comprueba si el pedido está pendiente, y si ha pasado más de una hora se cancela.

    /* Cancelar automaticamente pedidos pendientes tras 1 hora */
    add_action('woocommerce_order_status_pending', 'ayudawp_cancelar_pedidos_pendientes');
    
    function ayudawp_cancelar_pedidos_pendientes($order_id) {
        if (!wp_next_scheduled('ayudawp_cancelar_pedidos_pendientes_una_hora', array($order_id))) {
            wp_schedule_single_event(time() + 3600, 'ayudawp_cancelar_pedidos_pendientes_una_hora', array($order_id));
        }
    }
    add_action('ayudawp_cancelar_pedidos_pendientes_una_hora', 'bbloomer_cancel_order');
    
    function bbloomer_cancel_order($order_id) {
        $order = wc_get_order($order_id);
        wp_clear_scheduled_hook('ayudawp_cancelar_pedidos_pendientes_una_hora', array($order_id));
        if ($order - > has_status(array('pending'))) {
            $order - > update_status('cancelled', 'Pedido pendiente cancelado tras 1 hora');
        }
    }

    Herramientas relacionadas

    • WooCommerce

      El plugin para crear tiendas online por excelencia. Tanto de productos físicos como digitales. Es la base para prácticamente cualquier proyecto web que acepte pagos online.