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