Esta función usa el filtro de «woocommerce_add_cart_item_data» para que «resetee» el carrito cada vez que se añade un nuevo item, de tal modo que solo se puede comprar un solo item cada vez.

add_filter( 'woocommerce_add_cart_item_data', 'woo_custom_add_to_cart' );

function woo_custom_add_to_cart( $cart_item_data ) {

global $woocommerce;
$woocommerce->cart->empty_cart();

// Do nothing with the data and return
return $cart_item_data;
}