Do no allow free and paid products to be purchased together in WooCommerce on child sites.
Snippet Type
Execute on Child Sites
Snippet
function action_woocommerce_add_to_cart( $cart_item_key, $product_id, $quantity, $variation_id, $variation, $cart_item_data ) {
    // Get current product
    $current_product = wc_get_product( $product_id );
    // Get current product price
    $current_product_price = $current_product->get_price();
    // Initialize
    $is_free = false;
    $notice = false;
    // When current product price = 0
    if ( $current_product_price == 0 ) {
        // Make true
        $is_free = true;
    }
    // Loop through cart contents
    foreach ( WC()->cart->get_cart_contents() as $item_key => $cart_item ) {
        // Get price
        $product_price = $cart_item['data']->get_price();
        // Product price is NOT equal to 0 and current product is free
        if ( $product_price != 0 && $is_free ) {
            // Remove product from cart
            WC()->cart->remove_cart_item( $item_key );
            // Make true
            $notice = true;
        // Product price is equal to 0 and current product is NOT free
        } elseif ( $product_price == 0 && ! $is_free ) {
            // Remove product from cart
            WC()->cart->remove_cart_item( $item_key );
            // Make true
            $notice = true;
        }
    }
    // Optionaly displaying a notice
    if ( $notice ) {
        wc_add_notice( __( 'Some products have been removed from the cart because free and paid products cannot be bought together', 'woocommerce' ), 'notice' );
    }
}
add_action( 'woocommerce_add_to_cart', 'action_woocommerce_add_to_cart', 10, 6 );